我一直在搜索stackoverflow;但是,我似乎发现了与此有关的各种相互矛盾的答案。鉴于Android 5.1.1和iOS 8.4.1,可以通过无连接BLE服务相互发送的最大字节数是多少。我的基本理解是它应该是BLE Specficiation的20个字节(实际上是23个);但是,我已经看到iOS能够推动512的问题,而且android能够增加它的MTU。
此外,如果可以在连接中发送超过20个字节,那么当它接收数据包而没有直接连接时,它们都可以在iOS和Android上的扫描仪上正确识别并使用跨平台应用程序吗?
答案 0 :(得分:2)
Per Apple' Best Practices for Setting Up Your Local Device as a Peripheral:
虽然广告包一般可以容纳各种各样的广告 有关外围设备的信息,您可以只宣传您的 设备的本地名称和您想要的任何服务的UUID 广告。也就是说,当您创建广告词典时,就是您 可以只指定以下两个键: CBAdvertisementDataLocalNameKey和 CBAdvertisementDataServiceUUIDsKey。如果您收到错误 指定任何其他键。
当您可以使用多少空间时,也存在限制 广告数据。当您的应用程序位于前台时,它最多可以使用 任何初始广告数据中的28个字节的空间 两个支持的广告数据键的组合。如果这个空间 用完了,扫描中还有10个字节的空间 只能用于本地名称的响应。任何服务UUID 不适合分配的空间被添加到特殊区域 “溢出”区;它们只能由iOS设备发现 明确地扫描它们。当你的应用程序在后台时, 本地名称未公布,所有服务UUID都放在 溢出区。
注意:这些大小不包含2个字节的标头信息 每种新数据类型都需要。确切的格式 广告和响应数据在蓝牙4.0中定义 规范,第3卷,C部分,第11节
如果您使用未注册的16字节服务UUID,我认为这将为您提供大约12个字节的数据。
通告数据包中的可用字节将与有效负载数据包中的可用字节不同。