当前位置:首页 期刊杂志

基于iBeacon技术的消息推送机制的应用与实现

时间:2024-09-03

刘 红, 胡 鑫, 马天时

(上海电机学院 电子信息学院, 上海 201306)



基于iBeacon技术的消息推送机制的应用与实现

刘 红, 胡 鑫, 马天时

(上海电机学院 电子信息学院, 上海 201306)

结合iBeacon技术实现的消息推送,使运行于iOS系统上的应用程序在室内也可以准确地向用户推送消息。系统采用低功耗蓝牙技术——iBeacon技术作为解决方案,来提高iOS应用程序在室内基于位置推送消息的准确度。系统最终实现了在室内通过布置依赖于iBeacon技术的蓝牙基站,提高了iOS应用程序在室内基于位置推送消息的准确度。

iBeacon技术; iOS应用; 推送通知; 低功耗; 蓝牙基站

据中国产业信息网发布的“2016—2022年中国智能手机行业分析及投资前景预测报告”[1]显示,中国未来智能手机的数量将继续以不小的规模增长。不仅在中国,在全球范围内智能手机的增长都呈现这样的趋势,智能手机已逐渐成为人们生活中不可或缺的一部分。智能手机的发展离不开运行于智能手机之上的应用程序,而各种应用程序又可以带来各种信息。随着移动互联网技术的高速发展,应用程序向用户提供信息的方式也越来越多,本文研究推送消息的机理。

从机制上,以推送的形式发送给用户的消息主要有两种[2]:① 本地信息推送。该类消息是基于时间来推送信息。推送的信息强调来自应用程序本身,而采用该推送机制的应用程序常见于GTD(Getting Things Done)类的应用程序,如利用“闹钟”、“日历”设置时间提醒用户,或在“待办事项”中设置事件、时间,并在设置的时间通知用户。采用本地信息推送的应用程序存在推送内容需要用户事先设置的局限,且只能在规定时间发送通知内容,不能动态地推送消息。② 远程消息推送。该类消息是基于Apple的APNs(Apple Push Notifiction)或Google的GCM(Google Could Messaging)[3]服务器来实现消息的推送。相较于本地信息推送,其不受时间和内容的约束,可以在任意时间向用户推送动态的消息内容。但是,无论是本地消息推送还是远程消息推送,都只是依赖于固有的推送模式,很难实现真正意义上消息推送的智能化。究其原因在于消息推送的时间和内容往往是由消息服务器单方面决定的,不能做到响应以及内容的智能化选择。

为了能够更智能地向用户推送消息,基于位置的服务(Location Based Service,LBS)通过用户地理位置+远程消息推送的工作模式,实现基于用户当前的地理位置向用户推送位置周边的信息,实现推送消息内容以及响应的智能化。但是,基于地理位置的消息推送服务往往对GPS的信号依赖性较强,且就消息推送服务而言,工作环境大多在室内,因此,通过用户的GPS位置来远程推送消息,并不特别可靠。为此,本文采用了iBeacon技术+远程消息推送的工作模式来为用户提供基于室内位置的消息推送服务。

本文基于Apple公司推出的低功耗蓝牙(Buletooth Low Energy, BLE)技术——iBeacon技术,结合消息远程推送机制设计了一个智能消息推送系统。其中,系统的iBeacon基站位置由推送的消息内容决定,以实现针对位置推送内容的合理性;同时,以iBeacon基站作为消息触发器,实现消息响应的智能化;并且以后台服务器作为消息的提供者,以iOS应用程序作为信息显示的窗口[4]。

1 iBeacon技术

iBeacon技术是2013年Apple全球开发者大会(Worldwide Developers Conference, WWDC)大会上推出的一种服务于室内定位和广告服务的BLE 4.0技术。其拥有如下优点[3-5]:① 免布线。 基于iBeacon技术实现的系统,不可避免地需要涉及到外部硬件的支援,但得益于采用蓝牙作为无线通信方式,免去了布线烦恼,降低了后期维护难度。② 低成本。得益于外部硬件的工作模式——“仅需要不断地向外界广播自身的iBeacon ID(UUID、Major、Minor)”,故仅需给支持蓝牙4.0协议的芯片外接几个由阻容器件构成的滤波电路和PCB天线,便能实现广播功能,故可以做到在支援硬件上的低成本化,同时为大型化场景的实施起到一定促进作用。③ 低功耗。无论是装载应用程序的iOS设备还是作为外部支援的硬件,均得到BLE 4.0技术的保驾护航,满载动力。④ 室内定位准。基于iBeacon技术实现的系统,大多是运用于室内环境,相交于传统的定位方式,其抗干扰能力更强、定位更准。

实践也证明,采用iBeacon技术设计的消息推送系统无论是在性能、功耗上,还是成本上都是不错的选择。

1.1 iBeacon技术原理

基于iBeacon技术实现的消息推送系统,其工作机制是当安装了该应用程序的iOS设备在打开蓝牙(硬件支持蓝牙4.0)的前提下,靠近外部的iBeacon基站便能获取到推送消息[5]。

需要注意的是,iBeacon蓝牙基站不是伪基站,不会对外推送定制消息。所有手机应用程序获得的推送消息都是基于iBeacon身份的ID认证通过后的外部数据,它绑定的是数据库或云服务。iBeacon的工作原理如图1所示。

图1 iBeacon系统工作原理

基于这种工作模式,可以为不同的iBeacon蓝牙基站制定不同的消息响应内容;由于iBeacon蓝牙基站的布置是由系统决定的,系统了解该iBeacon基站附近的情况、需要的内容,故可实现消息的定制化推送。

1.2 iBeacon技术推送消息的实现

本系统首先使用外部硬件——iBeacon蓝牙基站来作为消息的触发器,其工作模式仅仅是无连接地向外界广播自身的iBeacon ID;然后,iOS操作系统在接收到该iBeacon蓝牙基站传送的信号后先进行解释,并向等待iBeacon咨询的所有应用程序发送解释接收到的内容,当应用程序确定得到的内容属于自己的咨询内容,便将得到的内容发送给对应的后台服务器;最后,服务器根据应用程序传来的内容,调度相应的消息响应方式推送至用户的iOS设备上,从而实现系统的功能。

2 iBeacon蓝牙基站功能的实现

系统的iBeacon蓝牙基站只需要不断地向外界广播自己的iBeacon ID,故在外部硬件的设计施工中,在蓝牙4.0芯片周围外接几个由阻容器件构成的滤波电路和PCB天线即可实现广播功能。系统的iBeacon蓝牙基站选用的是TI公司的CC2541 BLE芯片,搭载于SmartRF开发板上作为iBeacon蓝牙基站[3,6],如图2所示。

图2 系统的iBeacon蓝牙基站

iBeacon蓝牙基站采用的是BLE技术,并利用其中的通告帧(Advertising)进行广播。通告帧为定期发送的帧,只要支持BLE的设备都能接收[6]。iBeacon蓝牙基站通过将Apple公司自主格式的数据嵌入到通告帧的有效负载部分,以使广播内容能被iOS操作系统识别,嵌入的数据如下:

/*Apple Pre-Amble*/

0x4C

0x00

0x02

0x15

除外,该位置还包含了iBeacon蓝牙基站自身的iBeacon ID,分别为UUID、Major、Minor。其中:① UUID为全球唯一标识符,即规定为ISO/IEC 11578:1996标准的128位标识符,可以在macOS操作系统的终端键入uuidgen命令生成,也可以在Objective-C编程中通过Foundation框架中的NSUUID基类制作。UUID特别应用于当前应用程序且只属于该应用程序。② Major是发布者自行设定的16位标识符。它进一步确定该iBeacon蓝牙基站的使用情景。③ Minor也是发布者自行设定的16位标识符,其允许将iBeacon使用的场景再进行细分。

以上三者的作用可参考表1。其中,UUID的意义是做第1层身份识别,只有接收到的广播内容中包含表中的UUID,系统的应用程序才会将接收到的广播内容交付给后台服务器;由后台服务器根据不同的Major、Minor组合调度不同的消息响应。

表1 iBeacon ID的应用样例

iBeacon蓝牙基站通告帧部分还包含了一个功率测量(Measure Power)参数,它是iBeacon蓝牙基站与接收器(装载该应用程序的手机)之间相距1 m时的参考接收信号强度(Received Signal Strength Indication,RSSI)。该参数主要用于室内定位,本文中不涉及,故不详细介绍。

iBeacon蓝牙基站自身iBeacon ID在通告帧中嵌入的数据样例如下:

/*Device UUID(16 BYTES)*/

0x76,0x34,0xA4,0x85,0x17,0x32,0x4B,0x7D,0xAB,0x44,0xD5,0x05,0xD8,0xA2,0x4C,0x60

/*Major Value (2 BYTES)*/

0x00,0x01

/*Minor Value (2 BYTES) */

0x00,0x02

/*calibrated Tx Power*/

0xCD

3 iBeacon应用程序的设计

本消息推送系统运行于iOS平台,而目前市面上两大主流手机操作系统分别为iOS和Android,Android平台拥有与iBeacon技术相似的、由谷歌公司推出的Eddystone技术[7],本文不做讨论。

3.1 引入框架设置监视器

iBeacon的本质是一个位置(区域)信息,故iBeacon的功能集都被封装在与地理位置相关的Core Location Framework框架[8]中,在程序开发时先引入该框架。

在系统工作流程中,iOS操作系统(iOS 7及以上)先对接收到的iBeacon蓝牙基站广播的数据进行解释,并将得到的信息交付给等待iBeacon咨询的应用程序。为确保iBeacon蓝牙基站广播的内容能被交付给等待咨询的应用程序,设置1个监视器[9-10]以实现区域监控,并保证应用程序工作在前、后台或被杀死的情况下都能响应消息的调度(运用于测距时必须工作在前台状态下)。监视器设置如下:

[self.beaconManager requestAlwaysAuthorization];

[self.beaconManager startMonitoringForRegion: [[CL BeaconRegion alloc]

initWithProximityUUID:[[NSUUID alloc]

initWithUUIDString:@"B9407F30-F5F8-466E-AFF9-25556B57FE6D"]

identifier:@"monitored region"]];

为了提高消息的响应速度,接收iBeacon咨询的应用程序需先验证UUID,即与监视器中设置的UUID作比较,若确认是发送给自己的咨询,则将得到的iBeacon ID数据发送给后台服务器;否则,不做任何应答。

3.2 deviceToken生成与认证

要使推送的消息在系统应用程序不工作的情况下也能接收到推送内容,必须采用远程推送消息的形式。iOS设备上的所有远程消息推送都是基于Apple公司提供的APNs服务器转送给用户的,为了准确地把消息推送给目的设备,必须注册生成deviceToken。deviceToken在系统中的作用如图3所示。图中,① APNs服务器与iOS设备之间长期存在一个通过SSL加密的长连接,使应用程序在不工作的状态下也能接收到推送消息;② 当应用程序第一次被安装在iOS设备上时,应用程序通过iOS设备与APNs之间的SSL连接在APNs服务器中注册一个deviceToken,用来唯一标识安装该应用程序的设备;③ deviceToken注册成功后上传到系统的后台服务器,由后台服务器管理和维护系统服务的设备;除此,在每次上报获得的iBeacon蓝牙基站广播消息的同时上报设备的deviceToken,使系统知道请求是哪个设备发送的;④ 将deviceToken和要推送的消息交付给APNs服务器,APNs服务器通过查询deviceToken将消息推送至目的设备。

图3 deviceToken在系统中的作用

deviceToken是基于应用程序的APP ID(Bundle Identifer)和iOS设备的UUID注册生成的,在应用程序第1次启动且接受开启推送功能时,向APNs服务器发送注册请求,用来唯一识别安装该应用程序的设备[11-12],其注册过程如下:

-(viod)application:(UIApplication*)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *) notificationSettings

{

[application registerForRemoteNotifications];

}

-(viod)application:(UIApplication *) application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

NSLog(@"%@", deviceToken);

}

生成的deviceToken样例如下:

App ID iot4work-gmail-com-s-noyif-aud

App Token 4c453af16bb0e77c43a7cdb411a7bff2

deviceToken生成后,应用程序发送Http Request请求给后台服务器,在后台服务器建立对应的用户表。系统应用程序将获取到的iBeacon ID和deviceToken向后台服务器上报,具体如下:

NSURL *url=[ NSURL URLWithString: @"http://ibeaconti.applinzi.com/index.php"];

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];

NSString*submitContent=@"UUID=_uuid Major=_major & Minor =_minor & Device Token= _deviceToken";

[request setHTTPMethod:@"POST"];

[request setHTTPMethod: [submitContent dataUsingEncoding:NSUTF8StringEncoding]];

这样,当iBeacon广播信息传送至服务器时,就确定了传入信息的合法性(查询deviceToken对应的表中是否存在,即deviceToken认证)以及推送消息将到达的目的地(deviceToken)[11]。

3.3 消息推送

对于应用程序上报的iBeacon数据,服务器通过对Major、Minor的组合确定推送的具体消息[13-14],连同device token(向APNs服务器报告消息发送的对象)向APNs服务器打包发送。服务器推送消息流程如图4所示。

消息服务器与APNs服务器之间仍采用SSL加密协议[15-16]。先生成一个专门用于推送的凭证,并在macOS的keychain中输出,其目的是将产生的密钥在服务器和APNs服务器的SSL加密协议中使用。本文使用Google开发的第3方函数库JavaPNS来处理SSL加密。消息推送至服务器过程如下:

图4 消息推送流程

Fig.4 Message push flow

import javapns.Push

public class ANPTest

{

public static void main(String[] args)

{

try

{

String Token="4c453af16bb0e77c43a7cdb411a7bff2";

String KEYNAME="KEY.p12";

String KEYPWD="Ab119";

Push.alert("欢迎光临Cool服装店,种种精彩为你呈现",KEYNAME,KEYPWD,false,TOKEN);

}

catch(Exception e)

{

System.out.println(e);

}

}

}

消息数据样式如下:

textTpl="〈xml〉

〈ToUserName〉〈![CDATA[%s]]〉〈/ToUserName〉

〈FromUserName〉〈![CDATA[%s]]〉〈/FromUserName〉

〈MsgType〉〈![CDATA[news]]〉〈/MsgType〉

〈ArticleCount〉1〈/ArticleCount〉

〈Articles〉

〈item〉

〈Title〉〈![CDATA[服装折扣]]〉〈Title〉

〈Description〉〈![CDATA[最新上市的服装内容]]〉〈/Description〉

〈PicUrl〉

〈![CDATA[http:/1.ibeaconti.applinzi.com/01.close.jpg]]〉

〈/PicUrl〉

〈Url〉

〈![CDATA[http:/1. ibeaconti.applinzi.com/Html%20Demo/index.html]]〉

〈/Url〉

〈/item〉

〈/Articles〉

〈/xml〉";

当服务器推送的内容到达APNs服务器后,APNs服务器依据deviceToken将消息内容转发到对应的iOS设备,从而完成消息的远程推送。

3.4 功能测试

为测试本文设计的系统功能,在iOS设备上进行真机测试[13]。通过给烧写了不同iBeacon ID的iBeacon蓝牙基站上电使其广播,如图5所示。

图5 iBeacon蓝牙基站广播

针对不同的iBeacon蓝牙基站触发推送不同类型的消息[14]。如图6所示为在锁屏状态下得到的消息提示,按照图中的提示“向右滑动消息”显示如图7所示的图文内容。

系统功能的保障是及时地向用户推送消息,因此,后台服务器对事件的响应速度是极为重要指标。在随机抽样的24 h内,后台服务器接收和响应的网络数据如图8所示。图中,在线实时查看推送的视频内容最高达到了2 MB以上,后台服务器对事件的响应速度测试整体符合预期目标。

图6 锁屏下的提示

Fig.6 Prompt on locked screen

图7 按照提示操作显示的内容

图8 后台服务器实时网络流量

4 结 语

本文基于对Apple公司推出的BLE技术——iBeacon技术的认识,结合远程消息推送的机制,实现了让用户间接地去决定服务器何时向客户端推送何种内容的消息,在功能上基本实现了推送包括文字、声音、视频、图像在内的多种消息内容,在一定程度上实现了推送消息的智能化。让推送的内容更合理,能被更多的用户所采纳是今后研究的重点。今后将结合用户的使用习惯、机器学习等手段,提高推送消息的质量与被采纳率,真正实现更具现实意义的消息智能化、自动化。

[1] 华经情报网. 2016—2022年中国智能手机行业市场研究及发展前景预测报告 [R/OL].(2016-10-01)[2017-02-28].http://www.huaon.com/story/286129.

[2] 朱克刚. iOS8应用开发实战205个快速上手的开发技巧 [M].北京:清华大学出版社,2015: 288-296.

[3] Google Cloud Messaging. Energy your users across Android, iOS and Chrome [DB/OL].(2017-02-16)[2017-03-15]. https://developers.google.com/cloud-messaging/?hl=zh-cn.

[4] GILCHRIST C. Learning iBeacon [M]. Birmingham: Packt Publishing, 2014: 23-29, 87-91.

[5] LI Jia, WU Pinghui, CHANG Liping. Spectral properties of near-field evanescent waves scattered from a particulate medium with adjustable boundaries [J]. IEEE Photonics Journal, 2016,8(1):6400109.

[6] LI Jia, CHEN Feinan, CHANG Liping. Correlation between intensity fluctuations of electromagnetic waves scattered from a spatially quasi-homogeneous, anisotropic medium [J]. Optics Express, 2016, 24(21): 24274-24286.

[7] TEXAS INSTRUMENTS. Texas instruments CC2540/41 Bluetooth®low energy software developer’s Guidev 1.3.2 [R].[S.l.]: TEXAS INSTRUMENTS, 2013.

[8] LI Jia, WU Pinghui, CHANG Liping. Determination of correlation function of scattering potential of quasi-homogeneous medium by Young’s pinhole configuration [J]. Journal of Quantitative Spectroscopy and Radiative, 2016, 179 : 126-131.

[9] RICHTER K, KEELEY J. iOS Components and Frameworks: Understanding the Advanced Features of iOS SDK [M]. New Jersey, US:Pearson Education (US),2013: 131-140,319-327.

[10] LI Jia, WU Pinghui, CHANG Liping. Condition for invariant spectrum of an electromagnetic wave scattered from an anisotropic media [J]. Optics Express, 2015, 23(17): 22123-22133.

[11] COX J, JONES N, SZUMSKI J. Professional iOS Network Programming: Connecting the Enterprise to the iPhone and iPad [M]. Birmingham, UK: Wrox Press Ltd, 2014: 137-140.

[12] LI Jia, WU Pinghui, CHANG Liping. Near-zone evanescent waves generated by weak scattering of light from a spatially deterministic medium [J]. Journal of Quantitative Spectroscopy and Radiative Transfer, 2016,170: 1-7.

[13] 李伽,常丽萍,任宏亮,等. 一种携带电磁铁自动充断电装置的电动汽车: CN103192732A [P/OL]. 2013-07-10. http://d.wanfangdata.com.cn/Patent/CN201310118962.2/.

[14] LI Jia, WU Pinghui, QIN Yali, et al. Spectrum changes produced by scattering of light with tunable spectral degree of coherence from a spatially deterministic medium [J]. IEEE Photonics Journal, 2016, 8(2): 2600113.

[15] ESTIMOTE. App templates specification [DB/OL]. [2017-03-17]. http://developer.estimote.com/cloud/app-templates/

[16] HEYDON R. 低功耗蓝牙开发权威指南 [M]. 陈灿峰,刘嘉,译. 北京:机械工业出版社, 2014.

Application and Implementation of Message Push Mechanism Based on iBeacon

LIU Hong, HU Xin, MA Tianshi

(School of Electronics Information, Shanghai Dianji University, Shanghai 201306, China)

With message push using iBeacon, application programs running on iOS can accurately deliver messages to indoor users. The system described in this paper uses a low-power Bluetooth technology, iBeacon, as a solution to improve accuracy of indoor message pushing for iOS applications. The system has realized indoor message pushing and improved accuracy of applications under iOS using BlueSations that relies on iBeacon.

iBeacon; iOS application; push notification; low power consumption; bluetooth beacon

2017 -04 -12

:国家自然科学基金项目资助(61205121);上海市大学生创新创业训练计划项目资助(A1-5701-17-009-02-63);上海电机学院学科建设项目资助(16YSXK04)

刘红(1978-),女,副教授,博士,主要研究方向为物联网技术,E-mail:liuhong@sdju.edu.cn

2095 - 0020(2017)03 -0168 - 07

TP 393.093

A

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!