Apple Notification Center Service

转自:http://studentdeng.github.io/blog/2014/03/22/ancs/

MAR 22ND, 2014 | COMMENTS

名词解释与约定

名词解释

  • Apple Notification Center Service 简称 ANCS。
  • ANCS 服务(iOS设备,如iPhone,iPad等)的publisher 称为 Notification Provider。
  • 任意的ANCS服务的client(硬件设备,配件)称为 Notification Consumer。
  • Generic Attribute Profile简称GATT。
  • 在iOS NotificationCenter 显示的通知称为 iOS notification。
  • 通过GATT characteristic 发布的通知称为 GATT notification。
  • iPhone、 iPad等运行iOS系统的设备称为iOS设备

约定

文本档覆盖的内容中除特别描述外,和字节序相关的都是用Little-endian (小端模式)。 文本档覆盖的内容中除特别描述外,和字符串传递相关的都是UTF-8

Note: ANCS 并不保证始终存在,服务开启,关闭机制由iOS系统决定,Device 需要一直检测,查找ANCS是否存在。

协议内容

ANCS的uart profile UUID : ” 7905F431-B5CE-4E99-A40F-4B1E122D00D0”

uart profile 中包括3个 characteristic

  • Notification Source UUID: “9FBF120D-6301-42D9-8C58-25E699A21DBD” (notifiable)
  • Control Point UUID: “69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9”(write with response)
  • Data Source UUID:” 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB “(notifiable)

Device端Notification Source 是必须实现的。Centrol Point 和 Data Source 可选。

Notification Source Characteristic

Notification Source characteristic 包括3个功能

  • 新的iOS设备通知
  • iOS设备通知修改
  • iOS设备通知删除

当Device端 subscribes Notification Source characteristic时,GATT Notification 会立刻分发出去。所以,Notification consumer (Device)在subscribe之前就需要做好立马接受和处理消息的状态。

Notification Source response format

图2-1 Notification Source characteristic 通过GATT Notification 的格式。

  • EventID:描述iOS设备上面的通知是增加、删除、还是修改。
  • EventFlags: 标志位,描述iOS设备通知(重要, 静默)
  • CategoryID:iOS设备通知类型
  • CategoryCount:给定类型的通知数量,比如有2个未读email消息通知,这时有一个新的未读消息通知push到iOS设备,这时CategoryCount = 3 NotificationUID:通知的唯一标示,这个字段用于和Control Point characteristic 检索更多的信息。

表格3-1:CategoryID的描述

Notification Source Response Example

Device 获取的来此Notification Source的数据是“00 01 00 01 43 00 00 00”

图2-2一个iOS通知的生命周期。

比如当iOS设备(如iPhone)收到一个iMessage消息,iOS NotificationCenter会产生一个Notification,ANCS会通知device 有一个新的通知。当iOS设备阅读这个iMessage消息之后,iOS Not ificationCenter 会删除掉这个通知,ANCS把这个删除通知push到device

Control Point 和 Data Source Characteristic

只是Notification Source 不能获得足够的信息, Control Point 和 Data Source characteristic用来解决这个问题。 Device 向Control Point characteristic 写一个命令,如果成功,会从DataSource characteristic 获得response。

获取通知属性命令

该命令根据NotificationUID 查找通知的详细内容(通知属性)。

图2-3 获取通知属性命令格式 CommandID: 必须设置为0 NotificationUID:通知的唯一标示(Notification Source 获得) AttributeIDS:需要检索信息list

图3-5 可以检索的通知属性列表,其中Title, subtitle, Message 需要增加2个bytes的字段表示长度。

获取通知属性命令Example “00 43 00 00 00 00 01 FF FF 05”

获取通知属性命令Response消息格式

图2-4 获取通知属性命令返回数据格式

CommandID: 0 NotificationUID:通知的唯一标示 AttributeList:具体的属性返回数据列表. 如果返回的属性空,长度是0

如果返回的数据长度大于 GATT MTU,那么数据会被分几段传输。Device 需要对数据拼接。

通知属性命令Response 消息格式Example

下图查找 NotificationUID为2的 AppIdentifier、Title、SubTitle、Message Date属性返回数据

获取APP属性命令

该命令通过APPIdentifier查找iOS设备中安装的APP的属性。

图2-5 获取APP属性命令格式

CommandID: 必须设置成1 AppIdentifier:字符串’\0’ 结尾。 AttributeIDS:查找ID列表

获取APP属性命令 Example

查找AppIdentifier 为 “com.apple.mobilemail” 的APP属性

获取APP属性命令Response消息格式

图2-6获取APP属性命令返回数据格式

  • CommandID:必须是1
  • AppIdentifier:字符串 ‘\0’结尾
  • AttributeList:具体的属性返回数据列表. 如果返回的属性空,长度是0

如果返回的数据长度大于 GATT MTU,那么数据会被分几段传输。Device 需要对数据拼接。

获取APP属性命令Response消息格式Example

查找AppIdentifier 为 “com.apple.mobilemail” 的APP属性返回数据 汉字 “邮件”

sessions会话

ANCS 的 session 从设备订阅characteristic 开始到取消订阅或是disconnect结束。所有的Identifier 比如 NotificationUID,AppIdentifier 只在当前的session有效。

当session结束后,设备需要删除掉所有的在session中获得的Identifier信息,这些信息会在session建立的时候重新通知设备.

错误代码

  • 未知命令:(0xA0)
  • 无效命令:(0xA1)
  • 无效参数(0xA2) : 比如NotificationUID 找不到

注意:如果产生了上面的错误,都不会再收到任何的GATT 通知。

参考内容

Apple Notification Center Service (ANCS) Specification

Posted by studentdeng Mar 22nd, 2014  iOS

本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/5049565.html,如需转载请自行联系原作者

Apple Notification Center Service--ANCS【转】相关推荐

  1. 【苹果推位置推iMessage】Apple Notification Center Service (ANCS)

    推荐内容IMESSGAE相关 作者推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息 作者推荐内容 2.相册 ...

  2. Notification with Service Workers push events

    系列文章: Service Workers 和离线缓存 Notification with Service Workers push events (本文) PWA:添加应用至桌面及分享 Notifi ...

  3. Apple PUSH Notication Service (APNS) 配置攻略

    iOs 3.0以后就支持APNS( apple push notication Service).下面介绍怎么配置APNS服务.APNS 分为客户端与服务器端2个部分:客户端部分:1 创建一个App ...

  4. Apple iOS MDM service 簡介

    Apple iOS MDM service 簡介 藉由MDM服務,企業可以用來控管配發給員工的iOS Device.可以採用Apple官方推出的工具,也可以採用第三方開發的服務. MDM server ...

  5. Apple iOS MDM service 简介

    2019独角兽企业重金招聘Python工程师标准>>> 转载:http://blog.nienyiho.com/apple-ios-mdm-service-introduction/ ...

  6. xp系统打开itunes显示服务器失败,win7系统打开iTunes显示Apple Mobile Device Service无法启动怎么解决...

    通常我们要在电脑中对苹果手机文件进行管理的话,就需要打开iTunes来操作,但是有win7专业版系统用户在打开iTunes的时候,却显示Apple Mobile Device Service无法启动, ...

  7. 【android】Notification 和 Service的结合应用以及Notification在Android8.0之后的坑 Bad notification

    在结合<第一行代码>复习Service时踩到一个坑--notification 弹不出来,然后就crush掉了!!! 查阅相关资料发现是在Android8之后,notification很多 ...

  8. 苹果ANCS协议学习【转】

    苹果ANCS协议学习 转自:http://www.cnblogs.com/alexcai/p/4321514.html 综述 苹果通知中心(Apple Notification Center Serv ...

  9. 苹果ANCS协议分析

    SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...

最新文章

  1. 二分类任务:确定一个人是否年收入超过5万美元
  2. 某程序员哀叹:自己薪资远远超过了能力,想跳槽又怕外面接不住,怎么办?...
  3. bash文件外传入参数
  4. android中设置Animation 动画效果
  5. 什么是光纤以太网交换机?
  6. PHP之cookie免登录
  7. Spark系列-SparkSQL实战
  8. itools苹果录屏大师_如何录制ZOOM视频会议?实用的录屏软件
  9. 2008 r2 server sql 中文版补丁_sql2008 sp3补丁下载-sql server 2008补丁包sp3中文版补丁【32/64位】-东坡下载...
  10. 能测试护肤品成分的软件,查化妆品成分的app
  11. oracle 表分区 date,ORACLE分区表的使用和管理
  12. IMU、AHRS、VRU和GNSS、INS
  13. Java调用excel宏
  14. 商业智能助力 银行业数据“挖金”
  15. 如何在A4纸上打印连续的条形码
  16. 齿轮系统动力学模型matlab程序代码
  17. C#练习题答案: TO DE-RY-PO-陆琪暗号【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
  18. (Ryan的Koa系列博客)6.依赖库:on-finished(本文尚未完成)
  19. SAP 物料分类账相关的表
  20. Educoder计算机数据表示实验(HUST)-汉字国标码转区位码实验偶校验编码设计logisim

热门文章

  1. 面试题 02.03. 删除中间节点
  2. c++程序设计中多态与虚函数知识点
  3. String 源码解析
  4. 第三章 深入分析Java Web中的中文编码问题
  5. OSMeteorTranslationAPI(百度,有道)对比
  6. C# 声明方法的语法
  7. 解决MSChart底部横坐标显示不全的问题
  8. 哪些数据库是行存储?哪些是列存储?有什么区别?
  9. 中国离婚大数据:离婚/结婚比东北三省和四大直辖市霸榜
  10. STM32之通用定时器编码器模式