我正在开发使用BLE(CoreBluetooth)的蓝牙手表的iOS应用程序(Objective-C),而我的手表有GATT蓝牙配置文件,iOS应用程序最低支持来自iOS7。
我想知道如何使用Core Bluetooth框架在iOS设备和外部设备之间进行数据传输。
其实我正在使用蓝牙手表的固件升级部分, 每当收到任何更新,我的iOS应用程序将从Web服务获取固件代码(二进制数据),然后它将数据发送到蓝牙手表。
我搜索并获得了一个Apple示例代码: BTLE_Transfer:https://developer.apple.com/Library/ios/samplecode/BTLE_Transfer/Introduction/Intro.html
我想示例代码在我的情况下没有用,因为它具有Central和Peripheral,可以在两个iOS设备之间编码和传输数据。
除了这个BLE数据传输示例代码之外还有其他方法吗?或者只能使用此示例代码?(如果是,如何?)
更新:
我的设备有1个服务,其中2个用于读取,1个用于写入。
根据我的工作流程使用write charateristic:
[MYDEVICEINSTANCE writeValue:NSDATACHUNK forCharacteristic:WRITECHARACTERISTIC 类型:CBCharacteristicWriteWithResponse];
[MYDEVICEINSTANCE setNotifyValue:TRUE forCharacteristic:READCHARACTERISTIC];
[MYDEVICEINSTANCE readValueForCharacteristic:READCHARACTERISTIC];
我的查询:
我想确认来自iOS应用程序的 MTU允许的MTU最大限制用于外部设备通信,我在步骤1中通过发送 NSDATACHUNK 来确认BLE使用 writeValue
从iOS应用中观看我已经测试过我可以发送 MTU = 255 大小的NSDATACHUNK并且BLE手表正在成功接收。
我找到了" Apple示例代码:BTLE_Transfer "他们正在使用 MTU = 20 ,但我想这个示例代码适用于iOS设备与iOS设备的通信(如果我错了,请纠正我)
那么,如果我在我的iOS应用程序中使用 MTU = 250 进行BLE通信,苹果是否有机会拒绝我的应用程序?
或者有没有人可以说 Apple对MTU允许的最大限制是什么?
感谢每一个建议,
提前致谢
答案 0 :(得分:4)
您可以使用任何您想要的MTU大小(最多512个)。
连接将使用的值始终是您和他们之间的最小值。
所以,例如,如果他们想要使用等于的MTU,让我们说50,那么如果你的MTU低于50,那么将使用那个;否则,你选择50以上的值是没有意义的,因为50被选中。
答案 1 :(得分:0)
将设备连接到您的应用后,您应该写一个“特色”:
[YOURDEVICEINSTANCE writeValue:NSDATAVALUE forCharacteristic:YOURCHARACTESITIC type:CBCharacteristicWriteWithResponse];
我们花了很多时间使用我的自定义BLE设备,我的结论是:
答案 2 :(得分:0)
在iOS设备上,可用的mtu为20.这意味着每次将其设置为BLE外设时,您可以发送20个字节的数据。如果您想要进行超过20个字节的通信,则必须自己处理,参考APPLE Central Peripheral sample code
在您的情况下,问题不是iOS设备的mtu,而是您的外部BLE设备,因为您的BLE设备是外围设备。由于您的BLE设备能够传输大量数据 - 255个字节,因此可以使用该mtu。