日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ANCS推送简介

發布時間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.獲取通知屬性
該命令通過Control Point發出CommandID?:固定為0; NotificationUID: 特定通知的ID,通過NS 的通知獲取。 AttributeIDs:NC希望讀取的變量ID列表,有些變量可能需要跟一個16bit的數說明想要的最大長度; 復制代碼

NP端響應格式: 該響應通過DS通知給到NC 復制代碼

CommandID?:固定為0; NotificationID: 特定通知的ID,通過NS 的通知獲取。 Attribute List:查詢結果列表,每一項的格式都是:ID/16bit Length/Value,每個attribute都是一個字符串,其長度由Length指定,但是此字符串不是以NULL結尾。若找不到對應的Attribute,則Length為0* 如果返回的消息長度大于GATT最大傳輸長度(MTU),則其會被分割成多個分段。藍牙設備必須將這些分段組裝起來。當所有請求屬性的內容都接收完成后,此過程才算完成; 復制代碼
  • 2.獲取App屬性

通過Control Point發出 CommandID?:固定為1; AppIdentifier:app的字符串標識符,以Null結束。 AttributeIDs:希望獲得屬性的列表; 復制代碼

響應: 通過DS通知給到NC 復制代碼

CommandID?:固定為1; AppIdentifier:app的字符串標識符,以Null結束。 Attribute List:屬性值列表,每一個格式都是:ID/16-bit Length/Value,每個attribute都是一個字符串,其長度由Length指定,但是此字符串不是以NULL結尾。若找不到對應的Attribute,則Length為0;* 關于分段以及傳輸結束的判斷標準,與Get Notification Attributes一致; 復制代碼
  • 3.對通知執行操作
CommandID?:固定為2; NotificationUID: 特定通知的ID,通過NS 的通知獲取。 ActionID:從通知源中拿到的可以操作的類型,“積極”操作或“消極”操作. 從iOS8之后,NP可以通知NC一些相關的動作(接通、掛斷電話;刪除通知等),NC可以根據NP的通知執行對應的操作。從NS的通知event flag中 EventFlagPositiveAction和EventFlagNegativeAction位可以判斷是否能夠執行對應的操作。 通過獲取通知屬性對應的屬性IDNotificationAttributeIDPositiveActionLabel和NotificationAttributeIDNegativeActionLabel可以獲取到對應的操作描述(接聽/掛斷、清楚)。 復制代碼

錯誤碼: 對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。翻譯的意思是:一通未接來電。 復制代碼

總結

以上是生活随笔為你收集整理的ANCS推送简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。