01.ancs 简介
网站:
ancs ams 的监听:
Only one instance of the ANCS may be present on an NP. Due to the nature of iOS, the ANCS is not guaranteed to always be present. As a result, the NC should look for and subscribe to the Service Changed characteristic of the GATT service in order to monitor for the potential publishing and unpublishing of the ANCS at any time.
ancs 数据类型
ancs 特征:
所涉及的characteristic
服务: ancs server : 7905f431-b5ce-4e99-a40f-4b1e122d00d0
特征 (notification source,control Point ,data Source)
1、Notification Source:
UUID 9FBF120D-6301-42D9-8C58-25E699A21DBD(notifiable)
基本通知源,通知一些计数的信息;
2、Control Point:
UUID 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9(writeable with response)
控制器,用于向ios设备写入控制信息,例如读取详情;
3、Data Source:
UUID 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB(notifiable)
数据源,用于提供详细数据,在控制信息写入后通过此characteristic返回
notification source 数据结构
新的ios通知到来;
ios通知有改动;
ios通知移除
EventID:消息类型,添加(0)、修改(1)、删除(2);
EventFlags:消息优先级,静默(1)、重要(2);
CategoryID:消息类型;email,news ,Entertainment
CategoryCount:消息计数;
NotificationUID:通知ID,可以通过此ID获取详情;
Control Point 数据结构:
Data Source 数据结构:
数据解析:
通知的总长度为8字节,通过ANCS服务的通知源特征句柄进行传输。传输给BLE设备的每一则通知都只有8个字节,它并不能详尽的告诉BLE设备收到具体的iOS通知内容,它所能表达的只有收到了多少条哪种类型等粗略信息。
通知格式中的EventID表明了通知行为,它有下面三种方式:
· 增加通知:表明来了某条新的通知
· 修改通知:表明某条通知的更新
· 删除通知:表明删除了某条通知
EventFlags则会注明该通知所具有的特性,特性的类型如下,可以同时具有多种特性:
· 安静:表明通知并不怎么重要。
· 重要:表明通知重要,会在以各种手段提醒。
· 已存在:表明该通知已存在
· 可“积极”操作:表明该通知可以响应执行“积极”操作。
· 可“消极”操作:表明该通知可以响应执行“消极”操作。
CategoryID会给通知进行粗略的分类,类型如下:
· 来电:来电通知属于该分类。
· 未接来电:未接来电通知属于该分类。
· 语音信箱
· 社会:想像信息等软件属于该分类。
· 日程
· 邮件
· 新闻:各类新闻软件的通知属于该分类。
· 健康与健身
· 商业与金融
· 位置 · 娱乐
· 其他
苹果会对每个软件都进行上面的分类,如果软件没有明确的分类,则自动分到其他这个分类。
CategoryCount表示某个分类当前具有的通知个数。
NotificationUID这个字段占4个字节,共32位。每条通知都存在一个有iOS系统分配的UID。通知的UID号是按照通知到来的先后顺序进行编号的,最先到的通知UID为0,接着是1……依次递增。需要注意的是,通知的UID都是暂时有效的,每次BLE设备连接上iOS设备后,即每次会话开始,UID从0开始计,会话断开后,UID就没有用了。
下面以来电为例,解析期间收到的通知。来电时存在两种操作,不同的操作会收到不同的通知。
1、接听了电话
(1)来了一同电话
BLE设备将会收到一则通知,如下:
0 1A 1 1 0 0 0 0
EventID——0:表示为增加一条通知。
EventFlags——1A:即0x1A,具有重要、具有“积极”操作、具有“消极”操作等特性。
CategoryID——1:通知的分类为来电。
CategoryCount——1:通知的个数为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:通知的个数为0。 NotificationUID——0 0 0 0:即该通知的UID为0。
解析出的意思是:删除来电通知。
2、拒接了电话
(1)来了一同电话
BLE设备将会收到一则通知,如下:
0 1A 1 1 0 0 0 0
EventID——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 0
0 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。
翻译的意思是:一通未接来电