响应完成ANCS获取通知属性

时间:2014-07-22 18:44:27

标签: ios objective-c ancs

在尝试为CSR1010开发套件编写一些固件之前,我正在和ANCS一起尝试了解它的工作原理。

我一直在目标C中编写一个cmd行应用程序,作为中心,然后询问ANCS服务。我可以收到通知源没问题,并使用正确的详细信息写回控制点以撤回我想要的属性。

我现在遇到的问题是我不确定数据源特性何时完成了它的传输。我拥有的MTU大小为20字节,因此我的数据将被拼接到必要的数据包并发送到罚款。我只是可以;当传输结束时,我可以看到我的头,从我可以看到没有消息标记的结尾或任何谎言,或任何方式来验证所有数据已到达,以便我可以将它们全部重新拼接在一起

苹果here关于ANCS的文件说:

如果对Get App Attributes命令的响应大于协商的GATT最大传输单元(MTU),则NP将其拆分为多个片段。 NC必须通过拼接每个片段来重新组合响应。当收到每个请求属性的完整元组时,响应完成。

当收到每个请求属性的完整元组时,您如何知道。“

THX // 56K

1 个答案:

答案 0 :(得分:0)

ANCS规范(https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Specification/Specification.html#//apple_ref/doc/uid/TP40013460-CH1-SW7)声明:

  

如果响应大于协商的GATT最大传输单元(MTU),则NP将其分成多个片段。 NC必须通过拼接每个片段来重新组合响应。当收到每个请求属性的完整元组时,响应完成。

发送GetNotificationAttributes请求时,您需要存储要请求的属性列表(或至少存储您请求的属性列表)。然后,在解析响应时,您需要等待更多拆分数据包,直到您收到所请求的所有属性。 这基本上意味着信任ANCS总是完全回答,情况应该如此;但是,为了安全起见,我会在代码中添加超时。这样,如果ANCS以某种方式卡住,你就不会在它的混乱中跟随它=)

利玛