劉 紅, 胡 鑫, 馬天時
(上海電機學院 電子信息學院, 上海 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]。
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基站附近的情況、需要的內容,故可實現消息的定制化推送。
本系統首先使用外部硬件——iBeacon藍牙基站來作為消息的觸發器,其工作模式僅僅是無連接地向外界廣播自身的iBeacon ID;然后,iOS操作系統在接收到該iBeacon藍牙基站傳送的信號后先進行解釋,并向等待iBeacon咨詢的所有應用程序發送解釋接收到的內容,當應用程序確定得到的內容屬于自己的咨詢內容,便將得到的內容發送給對應的后臺服務器;最后,服務器根據應用程序傳來的內容,調度相應的消息響應方式推送至用戶的iOS設備上,從而實現系統的功能。
系統的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
本消息推送系統運行于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 后臺服務器實時網絡流量
本文基于對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