【BLE】ANCS

2020-03-26  本文已影响0人  Blue_Well

苹果ANCS官网ANCS spec

端和字符编码

IOS设备ANCS与ble设备进行通信的过程中都是采用的小端模式进行传输的。
NC接收到的attribute length数据为0x02 0x00,应该解析为0x00 0x02,即长度为2byte.
字符串的编码采用了UTF-8编码格式。

术语

ANCS:苹果通知中心服务。
NP(Notification Provider):消息提供者,指的是ANCS服务的产生者,即IOS设备。
NC(Notification Consumer):消息接受者,指的是ANCS服务的客户端,即周边BLE设备。

服务特性

ANCS Service UUID:7905F431-B5CE-4E99-A40F-4B1E122D00D0

Characteristic:

通知源

NC收到的通知源特性主要有三种事件:


Control Point和Data Source

NC设备可能想要与IOS通知进行交互。它可能需要获得通知的更多信息,其中包括它的内容以及在此基础上进行一些操作,这些都要通过Data Source和Control Point特性来实现。

NC可以通过往Control Point特性里写入命令来获取关于通知的更多消息。如果命令写入成功的话,NP会在Data Source特性中通过通知流对该请求进行回复。

获取通知具体属性

获取通知属性命令使得NC可以得到某个特定通知的详细属性,比如短信的发送人,短信内容,时间等。



该命令包含了一下的信息:

获取应用属性

获取应用属性命令允许NC指定获取NP上某个已安装的应用程序的属性。



获取应用属性命令包含下面信息:

响应一个获取应用属性命令的数据包含下面信息:

执行通知动作

它允许NC向指定的iOS通知执行一条预定动作。


image.png

一条执行通知动作包含下面信息:

通知动作

从iOS8开始,NP发送的iOS通知起始可以间接的告诉NC可执行哪些动作。接着,NC就可以针对指定的iOS通知,请求NP执行一个动作。
通知源特征上生成的GATT通知包含一个叫做Eventflags的数据域,NC根据这个数据域就可得知对一条iOS通知可以执行哪些操作:

声明周期

一个ANCS的服务周期开始于NC订阅NP上的Notification Source characteristic,结束于NC取消该订阅或者断开连接。因为ANCS不是一种完全同步的服务,它没有追踪不同周期中的状态,因此所有的标示以及NC、NP之间的数据交换只在某一个周期中是有效的。
当一个周期结束后,NC应该删除其在本周期内采集和存储的所有的标示以及数据。一个新的周期开始的时候,NP会可能的把所有存在的通知下发给NC。

错误码

当往 Control Point characteristic中写入控制命令时,NC有时会受到ANCS错误码:

示例图

以下两个图展示了NP和NC之间的两种交互的过程的例子。Figure 2-7显示了NC上想要开启ANCS的基本流程;Figure 2-8 展示了NC获得IOS通知更多信息的基本流程。



上一篇 下一篇

猜你喜欢

热点阅读