【蓝牙】Apple Notification Center Service (ANCS) Specification

来源:互联网 发布:java 调用构造方法 编辑:程序博客网 时间:2024/06/08 05:09

参考链接:Apple Notification Center Service (ANCS) Specification
提示(tips):上述参考链接需要用VPN外网才能打开链接
注意事项:本文翻译是鄙人参考链接原文以及结合谷歌翻译而成,如果有问题敬请原谅。

介绍(Introduction)

苹果通知中心服务(ANCS)的目的是给予蓝牙配件(通过蓝牙低功耗链接连接到iOS 设备)一种简单方便的方式访问在iOS设备上生成的各种通知。

ANCS设计围绕三个原则:简单性,效率和可扩展性。 因此,从简单的LED到具有大型显示器的强大“伴随”设备的配件可以发现该服务很有用。

依赖性(Dependencies)

ANCS的使用没有依赖,它是GATT的一个子集,任何一个实现了GATT client的设备可以方便的从ios设备获取通知信息。

字节序和字节码(Endianness and String Encoding)

除非另有规定,通过ANCS传输的所有数值应为小端。

非另有规定,通过ANCS传送的所有字符串值都应由用UTF-8编码的Unicode字符组成。

术语(Terminology)

苹果通知中心服务将被称为ANCS 。

ANCS服务的发布者( iOS设备)将被称为通知提供者(NP) 。

ANCS服务的客户端(配件)应被称为通知消费者(NC) 。

iOS通知中心中显示在iOS设备上的通知应称为iOS通知 。

由GATT特性作为异步消息发送的通知应被称为GATT通知 。

苹果通知中心服务(The Apple Notification Center Service)

苹果通知中心服务是一个主服务,主服务的UUID:7905F431-B5CE-4E99-A40F-4B1E122D00D0

在NP上只能存在ANCS的一个实例。 由于iOS的性质,ANCS不能保证总是存在。 因此,NC应寻找并订阅GATT服务的服务更改特性,以便随时监控ANCS的潜在发布以及及时的取消发布。

服务特性(Service Characteristics)

在其基本形式中,ANCS暴露出三个特征:

  • 通知源: UUID 9FBF120D-6301-42D9-8C58-25E699A21DBD (可通知)
  • 控制点: UUID 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9 (可写响应)
  • 数据源: UUID 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB (可通知)

所有这些特性都需要访问授权。

支持通知源特性是必需的,而对控制点特性和数据源特性的支持是可选的。

注意:在ANCS中可能存在比上面列出的三个更多的特征。 也就是说,NC可以忽略它不能识别的任何特性。

通知源

通知源特性是通知NC的特性:

  • 一个新的iOS通知到达NP
  • 修改NP上的iOS通知
  • 移除NP上的iOS通知

一旦NC订阅通知源特征,就可以传送GATT通知。 因此,NC应处于在订阅此特性之前可以正确接受和处理这些消息的状态。

通过通知源特性传递的GATT通知的格式如图2-1所示。

通过通知源特点发表了GATT通知包含以下信息:

  • EventID:该字段通知外设给定的iOS通知是否被添加,修改或删除。此字段的枚举值定义在事件ID值。
  • EventFlags:位掩码的设置位通知的NC与iOS的通知特异性。例如,如果在iOS通知被认为是“重要的”,则NC可能要显示一个更积极的用户界面(UI),以确保用户正确警报。此字段的枚举位定义EventFlags。
  • CategoryID:一个数值提供在iOS的通知可以被归入一个类别。NP将努力为每个iOS的通知提供精确的类别。此字段的枚举值中定义类别ID值。
  • CategoryCount:在给定的类别活跃的iOS通知的当前数目。例如,如果两个未读电子邮件正坐在一个用户的电子邮件收件箱中,并且新邮件推送到用户的iOS设备,CategoryCount的值是3。
  • NotificationUID: 32位数值是对iOS的通知的唯一标识符(UID)。这个值可以被用作发送给控制点特性与iOS的通知交互的命令的手柄。

iOS通知的生命周期可以通过由NP生成的GATT通知的序列来间接推断,如图图2-2。

控制点和数据源(Control Point and Data Source)

一个NC可能需要使用iOS通知交互。它可能需要检索有关它的更多信息,包括其内容,也可能希望在其上执行操作。这些属性的检索是通过控制点和数据源的特点进行。

一个NC可以发出通过编写特定命令的控制点的特性来检索有关在iOS通知的更多信息的请求。如果写的控制点的特点是成功的,NP会及时通过GATT通知上的数据源特性的数据流的要求。

一个NC可以通过写特定命令的控制点特征执行在iOS通知预先确定的行动。有关行动和iOS通知的详细信息,执行通知操作。

获取属性的通知(Get Notification Attributes)

在获取通知属性命令允许NC检索特定的iOS通知的属性。一个Get通知属性命令的格式示于图2-3。


一大家通知属性命令包含以下信息:

  • CommandID:应设置为0(CommandIDGetNotificationAttributes)。
  • NotificationUID:代表为其客户想要的信息了iOS通知的UID 32位数值。
  • AttributeIDs:该NC想要检索的属性列表。一些属性可能需要随后指定的NC想要检索的属性的最大字节数的16位长度的参数。

Get通知一个响应的格式属性命令在显示图2-4。


获取通知的响应属性命令包含以下信息:

  • CommandID:设置为0(CommandIDGetNotificationAttributes)。
  • NotificationUID: 32位的数值即iOS的通知以下属性对应的UID。
  • AttributeList中: AttributeIDs列表/ 16位的长/属性的元组。一个属性始终是一个字符串的长度以字节为单位的元组提供,但不是空值终止。如果所请求的属性是空的或丢失的IOS通知,它的长度被设定为0。元组总是以相同的次序作为获取通知的AttributeIDs属性命令。

如果响应是大于GATT最大传输单元(MTU)时,它被分裂成NP的多个片段。NC必须通过重新组合拼接每个片断的响应。当已接收到每一个请求的属性的完整元组的响应就完成了。

获取应用程序属性(Get App Attributes)

在某些应用属性命令允许NC检索安装在NP特定应用的属性。在获取的应用属性命令的格式显示在图2-5。

应用程序属性命令包含以下信息:

  • CommandID:应设置为1(CommandIDGetAppAttributes)。
  • AppIdentifier:客户希望其信息的应用程序的字符串标识符。此字符串必须是空终止。
  • AttributeIDs:数控想要检索的属性的列表。

得到回应的格式属性应用命令的格式于图2-6

获取应用程序属性命令的响应包含以下信息:

  • CommandID:设置为1(CommandIDGetAppAttributes)。
  • AppIdentifier:应用以下属性对应的字符串标识。此字符串空值终止。
  • AttributeList中: AttributeIDs列表/ 16位的长/属性的元组。一个属性始终是一个字符串的长度以字节为单位的元组提供,但不是空值终止。如果请求的属性为空或丢失的应用程序,它的长度设置为0。元组总是在相同的顺序获取应用程序属性命令AttributeIDs。

执行通知操作(Perform Notification Action)

该执行通知操作命令允许在NC上执行特定的iOS通知的规定动作。一个执行通知操作命令包括以下字段:

字节 名称 描述 1 CommandID 设置为2( CommandIDPerformNotificationAction)。 2-5 NotificationUID 代表在其上客户端要执行的操作了iOS通知的UID的32位数值。 6 ActionID 要在iOS通知进行NC希望所需的操作。

如果没有数据源的特性产生的发出此命令时,不管是成功还是失败,都没有数据产生。

通知操作

与iOS 8.0开始,NP可以给NC设备通知关于iOS的通知相关的一些隐藏行动。代表用户的时,NC然后可以请求的NP,以执行与特定的iOS通知相关联的动作。

2 0
原创粉丝点击