ANCS推送简介
總體原理 ANCS通過藍牙BLE 4.0實現,僅支持iPhone 4S及以上且系統版本在IOS 7以上的手機,同時在外設端需要支持藍牙4.0協議。
1、外設端進行廣播,手機打開藍牙,搜索外設,連接外設,之后進行綁定(這很重要,否則無法接收通知)
2、外設在連接建立后需要監聽手機上的ANCS Service中的Notification Source
3、當有通知時,手機會給外設發消息,說明是哪個應用的通知
4、如果外設想進一步獲取通知的詳情,就往Control Point寫控制信息,獲取詳情
5、詳情會通過Data Source發過來
ANCS 服務
服務名: AppleNotification Center Service UUID:7905F431-B5CE-4E99-A40F-4B1E122D00D0
角色:
NC:Notification Consumer? (i410e) ????NP:Notification Provider? (iOS設備)
服務特征值:
Notification Source:? ?UUID9FBF120D-6301-42D9-8C58-25E699A21DBD (notifiable) Control Point:? UUID 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9 (writeable with response) Data Source: UUID 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB (notifiable) ? Note:訪問該服務需要進行配對。 ANCS服務尋找完畢后,就可以打開監聽通知功能了,這里需要注意的是,不能同一時間打開通知源特征Notification Source的通知和數據源特征Data Source的通知功能,所以這里可以開啟了一個定時任務,讓數據源特征在1s后再打來通知功能。
Notification Source
iOS設備(NP)用來通知i410e(NC)相應的通知;當i410e訂閱(set Notify)該特征值后就可以接收通知消息(i410e已自動執行); 格式:
? Category count: iOS通知中當前category的數量;(例如當有兩個未讀郵件的時候,又收到一個郵件通知,categoryCount就為3); NotificationUID: 一個32位的唯一的數字ID,通過這個ID可以用來發送命令操作iOS通知。 ??Control Point 和 Data Source
NC可以通過Control Point 對iOS通知執行操作;(獲取通知內容或者刪除通知等) NC通過對Control Point特征值寫特殊的命令來實現獲取通知內容等操作,如果執行成功,NP就會迅速的通過Data Source 特征值的發送通知內容到NC來響應該操作。 共三種:
- 1.獲取通知屬性
- 2.獲取App屬性
- 3.對通知執行操作
錯誤碼: 對Control Point執行操作的時候,收到的NP端未識別的操作的響應
I410e 返回有區別,以規范為準。 0xAA0, 0xAA1, 0xAA2, 0xAA3,
實際實驗之DataSource讀取 主要是介紹一下讀取的各個AttrID返回的都是啥:0(App ID) ->com.apple.mobilephone1(Title) ->1 (326) 021-3971(電話號碼,不過劃分方式好怪。。。)如果此號碼存了名字,則是電話本中的名字2(SubTitle) ->空 如果此號碼存了名字,則是mobile3(Message) ->Incoming Call其他應用的ID: 短信: com.apple.MoileSMS 微信: com.tencent.xin QQ: com.tencent.mqq 365: com.365rili.Coco Any.Do:com.anydo.AnyDO 系統提示:com.apple.reminders 復制代碼下面以來電為例,解析期間收到的通知。來電時存在兩種操作,不同的操作會收到不同的通知。 1、接聽了電話(1)來了一同電話BLE設備將會收到一則通知,如下:0 1A 1 1 0 0 0 0EventID——0:表示為增加一條通知。EventFlags——1A:即0x1A,具有重要、具有“積極”操作、具有“消極”操作等特性。CategoryID——1:通知的分類為來電。CategoryCount——1:通知的個數為1 NotificationUID——0 0 0 0:即該通知的UID為0。(2)接聽了來電接聽來電后,會收到一條通知,如下:2 1A 1 0 0 0 0 0EventID——2:表示為刪除一條通知。EventFlags——1A:即0x1A,具有重要、具有“積極”操作、具有“消極”操作等特性。CategoryID——1:通知的分類為來電。CategoryCount——0:通知的個數為0。 NotificationUID——0 0 0 0:即該通知的UID為0。解析出的意思是:刪除來電通知。2、拒接了電話(1)來了一同電話BLE設備將會收到一則通知,如下:0 1A 1 1 0 0 0 0EventID——0:表示為增加一條通知。EventFlags——1A:即0x1A,具有重要、具有“積極”操作、具有“消極”操作等特性。CategoryID——1:通知的分類為來電。CategoryCount——1:通知的個數為1。 NotificationUID——0 0 0 0:即該通知的UID為0。解析出來的意思就是說:來了一通電話。(2)拒接了來電如拒接了來電,BLE設備將收到兩則通知,如下:2 1A 1 0 0 0 0 00 18 2 1 1 0 0 0對第一條通知進行解析如下:EventID——2:表示為刪除一條通知。EventFlags——1A:即0x1A,具有重要、具有“積極”操作、具有“消極”操作等特性。CategoryID——1:通知的分類為來電。CategoryCount——0:通知的個數為0。 NotificationUID——0 0 0 0:即該通知的UID為0。解析出的意思是:刪除來電通知。對第二條通知進行解析如下:EventID——0:表示為新增一條通知。EventFlags——18:即0x1A,具有重要、具有“消極”操作等特性。CategoryID——2:通知的分類為未接來電。CategoryCount——1:通知的個數為1。 NotificationUID——1 0 0 0:即該通知的UID為1。翻譯的意思是:一通未接來電。 復制代碼總結
- 上一篇: android弹窗不能手动关闭_vue3
- 下一篇: matlab双纵坐标的绘图命令_MATL