什么是锁屏推送
ios8在锁屏状态下收到推送消息,且显示了应用的图标,注意到下图左下角KFC的图标了吗?这是什么,你见过吗?
没错,这就是ios8的最新特性,或者说一套技术组合实现的,包括:
- 建议的应用程序(Suggested Apps)
- 地理围栏(GPS Geo-fences)
- 锁屏消息推送(Lock screen notifications)
- iBeacon
想象下这种场景:当你进入某个商家门店附近时,会收到这个商家推送的消息或建议的应用(这个应用可能你已经安装,也可能没安装,就推送appstore的下载地址),离开后会收到一条感谢消息;当你进入星巴克时,星巴克的app已经自动推送到你锁屏的左下角了,不用解锁、搜寻你的星巴克应用就可以快速打开了。不错吧,类似的业务场景还可以想象的更多,特别是针对o2o应用,让更多激动人心的创新变成可能。
那,在这种体验到底是如何实现的呢?下面对这4个技术路线分别进行简要介绍一下:
一、建议的应用程序
建议的应用程序是实上是一个打开app的快捷键,使用GPS定位,ios8设备可以跟踪你的位置,当某个app得到了你的位置,这个app就可以展示在锁屏左下角,滑动它可以快速打开此app(如果没有安装就跳到appstore下载)。此功能可能会对某些用户来带来骚扰,用户可以在上面关闭此推送功能,或针对单独应用关闭。如下图:
二、地理围栏
地理围栏是指基于位置的周边虚拟边界,当你离开或进入这些特定位置时,应用程序会通过地理围栏来提醒你。
三、锁屏消息推送
由apple自动实现消息推送,技术实现上应该也是apns服务,只不过展示的位置不同而已。如果你的app具体beacon能力,不管你的app是开启或关闭或手机刚重启,均可以探测到beacon信号,由建议的应用程序,就可以根据商家唯一标识,推送特定商家的广告等内容。
ios7与ios8对应用推荐的不同处理
四、iBeacon
iBeacon[1] 是苹果公司2013年9月发布的移动设备用OS(iOS7)上配备的新功能。其工作方式是,配备有 低功耗蓝牙(BLE)通信功能的设备使用BLE技术向周围发送自己特有的ID,接收到该ID的应用软件会根据该ID采取一些行动。比如,在店铺里设置iBeacon通信模块的话,便可让iPhone和iPad上运行一资讯告知服务器,或者由服务器向顾客发送折扣券及进店积分。此外,还可以在家电发生故障或停止工作时使用iBeacon向应用软件发送资讯。(百度) 近场通讯的技术之前还有 NFC(RFId)、红外线等,事实在apple pay也是用NFC技术的。(参考 NFC与蓝牙的优劣)。
beacon是硬件,iBeacon是软件。
beacon硬件只会发送消息给支持iBeacon协议的设备,发送的数据结构由3部分组成:一个UUID,标识beacon商家,一个major,标识区域,如商家位置,一个minor,标识子区域,如果商家的一个部分,如销售部。beacon不接收消息,只发送消息。beacon不会发送具体商家促销等内容,它只发位置信息,收到位置消息的app,在监听到位置信息后,再根据业务逻辑推送促销内容。
目前4s+ios7.1以上都支持ble4(及支持ibeacon),android据说在anroid L版本会支持。(传统做法是驻留服务在后台不停扫瞄或双服务或闹钟服务,这些都比较耗电,没有可用性,还得等新版本android在系统层支持才行)。
业务场景要解决的两个主要问题
上述4种技术互相混合,就产生了最开始描述的应用场景,基于位置的app要解决两个主要问题:一是跟踪我的位置;二是兴趣点标识(如商家的位置)。两者都需要互联识别和匹配,才可以实际推荐特定应用、根据特定应用推送特定消息。
下面分开具体解释现在的做法。
一、跟踪位置
传统做法是通GPS定位来实现,同时辅以wi-fi热点、基站信息,三种方法来修正用户的位置,但这种定位数据不够精确,常常有较大的误差,特别是在室内时。这就需要在室内(商家)布署不同的热点设备,之前小米等公司的做法是架设wi-fi设备,跟电信号百推广的free-chinanet的做法类似,现在推广的情况不清楚。apple的做法就是架设不同的iBeacon设备,据传平安付在做。两者均需要架设设备,所有会是一个比较漫长的过程。如果这个流量入口抢占了,将会又一个技术革命。只要成本和收益可观,商家应该是愿意尝试的,而且还可以把线下支付场景一并接入(虽然银联一直在打压线下支付,但革命潮流是阻挡不住的!)。
二、商家标识
室内定位是哪外一套技术解决方案,apple的做法是使用iBeacon技术,它基于蓝牙BLE4.0以上协议实现,需要在各商家铺设各iBeacon硬件设备,每个设备都有唯一的标识。目前国内有很多厂商在生产这种设备了(如这家),包括微信也支持类似设备接入和绑定了(微信什么都做!)。有的厂家成本可以做到30元一个,覆盖范围在40米左右。当然覆盖范围还跟室内环境有一定关系,如障碍物等。一台手机可以支持20个区域监控(来源 百度)。这些厂家已经实现类似如下功能:扫描周围的传感器设备、读取传感器设备的参数、上传传感器设备状态(电池、UMM等)至 云平台、设置云子传感器等。
下一步,技术实现
作为一名开发者,你所要做的就是设置beacon区域监控/beacon地理围栏,然后等用户进入这个区域,这个APP的图标将自动出现在锁屏上。
技术实现上,首先得开启info.plist
<key>NSLocationAlwaysUsageDescription</key> <string>当你靠近星巴克时可以在锁屏时更容易的访问星巴克APP</string>
慎重!NSLocationAlwaysUsageDescription在提交app审核时,审核说明一定要说清楚应用场景,否则很可能拒掉!!
下面的代码基于 EstimoteSDK
#import "ESTBeaconManager.h" @interface AppDelegate () <ESTBeaconManagerDelegate> @property (strong, nonatomic) ESTBeaconManager *beaconManager; @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.beaconManager = [[ESTBeaconManager alloc] init]; // modify the region definition to match your set of beacons ESTBeaconRegion *region = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID major:12345 minor:54321 identifier:@"My region"]; [self.beaconManager requestAlwaysAuthorization]; [self.beaconManager startMonitoringForRegion:region]; return YES; } @end
参考
ibeacon faq http://blog.beaconstac.com/2014/08/beacon-faqs-everything-you-need-to-know/
业务场景 http://blog.beaconstac.com/2014/08/marketing-with-ibeacons-10-tips-to-make-the-most-of-it/
http://blog.estimote.com/post/97824495825/ios-8-pushes-location-context-to-a-new-level-lock
http://www.gottabemobile.com/2014/09/28/how-to-use-suggested-apps-in-ios-8/
作者
朱淦 [email protected]
http://my.oschina.net/u/1263162/blog