我正在开发一个iPhone应用程序,这个应用程序通过BLE模块向一个板发送命令。电路板控制一些电机移动。
我在iOS应用程序上执行代码,另一个人在Arduino上执行代码。板上有一个BLUGiga 112模块。
现在,在我的iOS应用程序中,我可以搜索出可用的BLE设备,但检测到的设备名称并不总是我想要的。
始终可以在iOS应用中检测gatt.xml文件中定义的设备名称。但我希望用户能够通过iOS应用程序更改名称,而xml中的名称是静态的。所以我让另一位硬件工程师编写一些代码来接受来自iOS的新名称并存储在flush中,然后再广播回iPhone。我可以从iOS应用程序传递名称,并且名称已成功存储在设备中。但是下次,当我打开iOS应用程序并尝试搜索时,并不总是会检测到新名称。
任何人都可以告诉我为什么?或者我该怎么办才能完成重命名功能?
答案 0 :(得分:0)
iOS阻止开发人员使用该服务。它还缓存数据并且很难清除缓存。
我最终创建了一个应用可以写入的自定义特征。固件将处理该写请求,然后更新设备名称和广告数据包。这看起来很糟糕,但我找不到更好的解决方案。
第3.12节(第24页)记录了iOS不允许开发人员使用该服务(以及其他几个)的事实https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf