文档章节

ios8 锁屏应用推送

swingcoder
 swingcoder
发布于 2015/07/25 16:51
字数 1923
阅读 1778
收藏 51

什么是锁屏推送

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/

 

作者

朱淦 350050183@qq.com

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


有书一起读

© 著作权归作者所有

swingcoder
粉丝 33
博文 332
码字总数 75140
作品 0
广州
技术主管
私信 提问
加载中

评论(1)

Glitter
Glitter
学习了,感谢分享
iOS8推送消息的快速回复处理

iOS8拥有了全新的通知中心,有全新的通知机制。当屏幕顶部收到推送时只需要往下拉,就能看到快速操作界面,并不需要进入该应用才能操作。在锁屏界面,对于推送项目也可以快速处理。基本上就是...

泊竹
2014/09/23
2.2K
0
iOS之[本地通知, 远程推送, 广播通知]

:fa-exclamation-triangle:注意本地通知/推送和[广播通知NSNotificationCenter/key-value 观察通知]没有关系 1.本地通知 本地通知是由本地应用触发的,是一种基于时间行为的通知 |-例如:...

言筱羽
2015/12/11
494
0
Android 锁屏后Service中的无法接收消息

最近在开发一个实时通话的应用,android端用的websocket保持与服务器通信。现在的问题是,已经在手机上将测试应用锁住,保证能够常住后台。但是当屏幕锁屏一段时间后就无法接收到服务器的消息...

胃在烧
07/08
106
1
越来越像安卓:Chrome OS 正测试锁屏通知功能

谷歌正不断增加 Chrome OS 新功能,例如添加浮动键盘对触控屏幕进行优化,以及为 Chrome OS 浏览器的平板触控模式进行优化,预计将在不久推送。 目前,Chrome OS 正借用来自 Android 的一部分...

王练
2018/03/03
1K
3
【iOS】注册推送及处理推送,打开界面

推送注册及处理推送,应用在前台时弹出 alert,应用在后台或通过推送打开应用时,直接进入推送页面。 注册通知 ios8 接受通知,解析参数 处理push页面 应用未运行,launchOptions判断,保存推...

ONEPIECE_iOS
2016/08/24
46
0

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
23分钟前
3
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
30分钟前
3
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
37分钟前
4
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
39分钟前
3
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
40分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部