ANCS推送簡介

總體原理
ANCS通過藍牙BLE 4.0實現(xiàn),僅支持iPhone 4S及以上且系統(tǒng)版本在IOS 7以上的手機校摩,同時在外設(shè)端需要支持藍牙4.0協(xié)議败晴。

1、外設(shè)端進行廣播史翘,手機打開藍牙枉长,搜索外設(shè),連接外設(shè)琼讽,之后進行綁定(這很重要必峰,否則無法接收通知)

2、外設(shè)在連接建立后需要監(jiān)聽手機上的ANCS Service中的Notification Source

3钻蹬、當有通知時吼蚁,手機會給外設(shè)發(fā)消息,說明是哪個應(yīng)用的通知

4问欠、如果外設(shè)想進一步獲取通知的詳情肝匆,就往Control Point寫控制信息,獲取詳情

5顺献、詳情會通過Data Source發(fā)過來


ANCS 服務(wù)

服務(wù)名: AppleNotification Center Service
UUID:7905F431-B5CE-4E99-A40F-4B1E122D00D0

角色:

NC:Notification Consumer  (i410e)
NP:Notification Provider  ([iOS](http://lib.csdn.net/base/1)設(shè)備)

服務(wù)特征值:

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:訪問該服務(wù)需要進行配對旗国。
ANCS服務(wù)尋找完畢后,就可以打開監(jiān)聽通知功能了注整,這里需要注意的是能曾,不能同一時間打開通知源特征Notification Source的通知和數(shù)據(jù)源特征Data Source的通知功能,所以這里可以開啟了一個定時任務(wù)肿轨,讓數(shù)據(jù)源特征在1s后再打來通知功能寿冕。

Notification Source

iOS設(shè)備(NP)用來通知i410e(NC)相應(yīng)的通知;當i410e訂閱(set Notify)該特征值后就可以接收通知消息(i410e已自動執(zhí)行)椒袍;
格式:


Category count: iOS通知中當前category的數(shù)量驼唱;(例如當有兩個未讀郵件的時候,又收到一個郵件通知驹暑,categoryCount就為3)玫恳;
NotificationUID: 一個32位的唯一的數(shù)字ID,通過這個ID可以用來發(fā)送命令操作iOS通知优俘。


Control Point 和 Data Source

NC可以通過Control Point 對iOS通知執(zhí)行操作纽窟;(獲取通知內(nèi)容或者刪除通知等)
NC通過對Control Point特征值寫特殊的命令來實現(xiàn)獲取通知內(nèi)容等操作,如果執(zhí)行成功兼吓,NP就會迅速的通過Data Source 特征值的發(fā)送通知內(nèi)容到NC來響應(yīng)該操作臂港。
共三種:

  • 1.獲取通知屬性


該命令通過Control Point發(fā)出

CommandID :固定為0;
NotificationUID: 特定通知的ID视搏,通過NS 的通知獲取审孽。
AttributeIDs:NC希望讀取的變量ID列表,有些變量可能需要跟一個16bit的數(shù)說明想要的最大長度浑娜;
NP端響應(yīng)格式:
該響應(yīng)通過DS通知給到NC
CommandID :固定為0佑力;
NotificationID: 特定通知的ID,通過NS 的通知獲取筋遭。
Attribute List:查詢結(jié)果列表打颤,每一項的格式都是:ID/16bit  Length/Value暴拄,每個attribute都是一個字符串,其長度由Length指定编饺,但是此字符串不是以NULL結(jié)尾乖篷。若找不到對應(yīng)的Attribute,則Length為0

* 如果返回的消息長度大于GATT最大傳輸長度(MTU)透且,則其會被分割成多個分段撕蔼。藍牙設(shè)備必須將這些分段組裝起來。當所有請求屬性的內(nèi)容都接收完成后秽誊,此過程才算完成鲸沮;
  • 2.獲取App屬性
通過Control Point發(fā)出
CommandID :固定為1;
AppIdentifier:app的字符串標識符锅论,以Null結(jié)束讼溺。
AttributeIDs:希望獲得屬性的列表;
響應(yīng):
通過DS通知給到NC
CommandID :固定為1最易;
AppIdentifier:app的字符串標識符肾胯,以Null結(jié)束。
Attribute List:屬性值列表耘纱,每一個格式都是:ID/16-bit Length/Value敬肚,每個attribute都是一個字符串,其長度由Length指定束析,但是此字符串不是以NULL結(jié)尾艳馒。若找不到對應(yīng)的Attribute,則Length為0员寇;

* 關(guān)于分段以及傳輸結(jié)束的判斷標準弄慰,與Get Notification Attributes一致;
  • 3.對通知執(zhí)行操作


CommandID :固定為2蝶锋;
NotificationUID: 特定通知的ID陆爽,通過NS 的通知獲取。
ActionID:從通知源中拿到的可以操作的類型,“積極”操作或“消極”操作.
從iOS8之后扳缕,NP可以通知NC一些相關(guān)的動作(接通慌闭、掛斷電話;刪除通知等)躯舔,NC可以根據(jù)NP的通知執(zhí)行對應(yīng)的操作驴剔。
 
從NS的通知event flag中 EventFlagPositiveAction和EventFlagNegativeAction位可以判斷是否能夠執(zhí)行對應(yīng)的操作。
通過獲取通知屬性對應(yīng)的屬性IDNotificationAttributeIDPositiveActionLabel和NotificationAttributeIDNegativeActionLabel可以獲取到對應(yīng)的操作描述(接聽/掛斷粥庄、清楚)丧失。

錯誤碼:
對Control Point執(zhí)行操作的時候,收到的NP端未識別的操作的響應(yīng)


I410e 返回有區(qū)別惜互,以規(guī)范為準布讹。
0xAA0琳拭,
0xAA1,
0xAA2描验,
0xAA3白嘁,

實際實驗之DataSource讀取
主要是介紹一下讀取的各個AttrID返回的都是啥:

0(App ID) ->com.apple.mobilephone

1(Title) ->1 (326) 021-3971(電話號碼,不過劃分方式好怪挠乳。。姑躲。)如果此號碼存了名字睡扬,則是電話本中的名字

2(SubTitle) ->空 如果此號碼存了名字,則是mobile

3(Message) ->Incoming Call

 
其他應(yīng)用的ID:
短信: com.apple.MoileSMS
微信: com.tencent.xin
QQ: com.tencent.mqq
365: com.365rili.Coco
Any.Do:com.anydo.AnyDO
系統(tǒng)提示:com.apple.reminders
下面以來電為例黍析,解析期間收到的通知卖怜。來電時存在兩種操作,不同的操作會收到不同的通知阐枣。
1马靠、接聽了電話

(1)來了一同電話

BLE設(shè)備將會收到一則通知,如下:

0 1A 1 1 0 0 0 0

EventID——0:表示為增加一條通知蔼两。

EventFlags——1A:即0x1A甩鳄,具有重要、具有“積極”操作额划、具有“消極”操作等特性妙啃。

CategoryID——1:通知的分類為來電。

CategoryCount——1:通知的個數(shù)為1
NotificationUID——0 0 0 0:即該通知的UID為0俊戳。

(2)接聽了來電

接聽來電后揖赴,會收到一條通知,如下:

2 1A 1 0 0 0 0 0

EventID——2:表示為刪除一條通知抑胎。

EventFlags——1A:即0x1A燥滑,具有重要、具有“積極”操作阿逃、具有“消極”操作等特性铭拧。

CategoryID——1:通知的分類為來電。

CategoryCount——0:通知的個數(shù)為0恃锉。
NotificationUID——0 0 0 0:即該通知的UID為0羽历。

解析出的意思是:刪除來電通知。

2淡喜、拒接了電話

(1)來了一同電話

BLE設(shè)備將會收到一則通知秕磷,如下:

0 1A 1 1 0 0 0 0

EventID——0:表示為增加一條通知。

EventFlags——1A:即0x1A炼团,具有重要澎嚣、具有“積極”操作疏尿、具有“消極”操作等特性。

CategoryID——1:通知的分類為來電易桃。

CategoryCount——1:通知的個數(shù)為1褥琐。
NotificationUID——0 0 0 0:即該通知的UID為0。

解析出來的意思就是說:來了一通電話晤郑。

(2)拒接了來電

如拒接了來電敌呈,BLE設(shè)備將收到兩則通知,如下:

2 1A 1 0 0 0 0 0

0 18 2 1 1 0 0 0

對第一條通知進行解析如下:

EventID——2:表示為刪除一條通知造寝。

EventFlags——1A:即0x1A磕洪,具有重要、具有“積極”操作诫龙、具有“消極”操作等特性析显。

CategoryID——1:通知的分類為來電。

CategoryCount——0:通知的個數(shù)為0签赃。
NotificationUID——0 0 0 0:即該通知的UID為0谷异。

解析出的意思是:刪除來電通知。

對第二條通知進行解析如下:

EventID——0:表示為新增一條通知锦聊。

EventFlags——18:即0x1A歹嘹,具有重要、具有“消極”操作等特性孔庭。

CategoryID——2:通知的分類為未接來電荞下。

CategoryCount——1:通知的個數(shù)為1。
NotificationUID——1 0 0 0:即該通知的UID為1史飞。

翻譯的意思是:一通未接來電尖昏。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市构资,隨后出現(xiàn)的幾起案子抽诉,更是在濱河造成了極大的恐慌,老刑警劉巖吐绵,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迹淌,死亡現(xiàn)場離奇詭異,居然都是意外死亡己单,警方通過查閱死者的電腦和手機唉窃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纹笼,“玉大人纹份,你說我怎么就攤上這事。” “怎么了蔓涧?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵件已,是天一觀的道長。 經(jīng)常有香客問我元暴,道長篷扩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任茉盏,我火速辦了婚禮鉴未,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸠姨。我一直安慰自己铜秆,他們只是感情好,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布享怀。 她就那樣靜靜地躺著羽峰,像睡著了一般趟咆。 火紅的嫁衣襯著肌膚如雪添瓷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天值纱,我揣著相機與錄音鳞贷,去河邊找鬼。 笑死虐唠,一個胖子當著我的面吹牛搀愧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疆偿,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼咱筛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杆故?” 一聲冷哼從身側(cè)響起迅箩,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎处铛,沒想到半個月后饲趋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡撤蟆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年奕塑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片家肯。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡龄砰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出讨衣,到底是詐尸還是另有隱情寝贡,我是刑警寧澤扒披,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站圃泡,受9級特大地震影響碟案,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颇蜡,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一价说、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧风秤,春花似錦鳖目、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碍沐,卻和暖如春狸捅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背累提。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工尘喝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人斋陪。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓朽褪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親无虚。 傳聞我的和親對象是個殘疾皇子缔赠,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容