ios8 锁屏应用推送

什么是锁屏推送

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://blog.beaconstac.com/2014/09/how-ios-8-takes-beacon-enabled-apps-to-the-next-level-enables-ibeacon-triggered-lock-screen-notifications/

http://www.gottabemobile.com/2014/09/28/how-to-use-suggested-apps-in-ios-8/

作者

朱淦 [email protected]

http://my.oschina.net/u/1263162/blog

时间: 2024-10-18 12:21:43

ios8 锁屏应用推送的相关文章

IOS8下的远程推送(转载)

原文地址:http://blog.sina.com.cn/s/blog_71715bf80101615c.html 昨天做了一下远程推送,今天写下来,分享给需要的人.参考了很多篇文章,或许是iOS8的改动,没有一篇可以完整的看下来,所以打算自己写一篇. 后台我也写了,用的是SAE,PHP代码,很简单,调用SAE封装好的一个类就可以向APNS发推送信息. 首先,来说一下苹果的推送机制.顾名思义,推送,是指服务器向客户端发送消息,那么在iOS中,应用是被后台挂起的,并不能一直连接网络,那么服务器怎么

iOS8下的远程推送

昨天做了一下远程推送,今天写下来,分享给需要的人.参考了很多篇文章,或许是iOS8的改动,没有一篇可以完整的看下来,所以打算自己写一篇. 后台我也写了,用的是SAE,PHP代码,很简单,调用SAE封装好的一个类就可以向APNS发推送信息. 首先,来说一下苹果的推送机制.顾名思义,推送,是指服务器向客户端发送消息,那么在iOS中,应用是被后台挂起的,并不能一直连接网络,那么服务器怎么才能把消息发送到客户端呢?这就用到推送,苹果的推送机制,是只能由APNS发送推送通知,所以你自己的后台服务器想给客户

ios8中修改的 推送和地图

ios8之前 注册通知的方法是 [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge]; ios8 注册这样写 UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:

推送技术哪家强?

各位看官, 目前我家App的推送功能在Android平台一直表现不佳,目前有3家名气还不错的推送单位待选. 个推(杭州本土企业,推送行业里历史悠久) 极光(号称中国最大推送平台) 友盟(一个做统计起家的后起之秀) 个个都吹的好牛逼,在下表示好迷茫. 到底哪家强?咱们不妨都拉出来做几组测试来看下 首先,我们来做一下以下3种场景的测试. 1.App至于前台进行推送测试. 2.App切到后台但不锁屏进行推送测试. 3.App切到后台切锁屏5分钟后进行推送测试. 测试机器: 1. 小米max Andro

win8 推送通知 小记

http://blog.csdn.net/nacl025/article/details/8998552 http://blog.csdn.net/nacl025/article/details/9037247 打开一个推送通道(如果它尚不存在),或者连接到一个现有的推送通道.如果您的应用在之前的应用实例中创建了推送通道,则可能会存在一个推送通道.如果推送通道绑定到图块或 Toast 通知,则应用退出之后推送通道仍然存在,这样,即使该应用未运行,也仍然可以接收这些通知. 使用 Raw 通知的应用

ios如何实现本地推送,兼容ios8

如果要兼容IOS8在IOS中实现本地推送,关键是要注意:ios8在实现本地推送时需要通过如下语句进行注册. [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings]; 至于IOS8之前版本的做法就不多说了,直接上代码.新建oc类文件(NotificationHelper),在NotificationHelper.h中声明相关方法如下: #import <UIKit/UIKit.h> @inte

iOS7、iOS8推送通知的区别

iOS8版本以后的推送通知代码[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];//注意下面这句,在iOS8

推送消息

APNS(Apple Push Notification Services)苹果专门的推送服务器 接收我们自己应用服务器需要被推送的消息 然后推送到我们的手机 手机通知我们的应用程序 注册的大概流程: 1 设备需要向APNS服务器注册 2 注册成功后返回device_token值 3 将这个token值发送给我们自己的服务器 4 有需要推送的消息时  自己的服务器将消息按一定的格式打包 结合token值发送给APNS服务器 5 由于App与APNS维持一个基于TCP的长连接 APNS将消息推送到

关于iOS的推送服务的点点

苹果推送通知服务(Apple Push Notification Service) 简称APNS. 是iOS应用中十分常见的一种交互方式. APNS依托一个或几个系统常驻进程运作,  接管所有应用的消息推送, 所以可看作是独立于应用之外, 而且是设备和苹果服务器之间的通讯, 而非应用的提供商服务器. 这和 Android不同, Android更像是传统桌面电脑系统的做法. 每个需要后台推送的应用有各自的单独后台进程, 才能和各自的服务器通讯, 交换数据. 另外其实 Android 也有类似 AP