我正在创建一个 iOS 应用程序,它应该从 Microsoft Health Band 2 接收事件,特别是当用户点击手环上的按钮时,我的应用程序会收到通知。一切都配对、通信并且在前台工作得很好。
我运行我的 iOS 应用程序,然后点击主页按钮将其置于后台。如果我按下手环上的按钮,我的应用程序会将事件记录到调试控制台并将事件发送到服务器。
但是,如果我等待几分钟,然后在手机锁定的情况下再次按下按钮,则什么也不会发生。如果我将应用程序放在 iOS 设备上的前台,所有丢失的事件都会立即处理。
理论上是否可以让蓝牙 LE 配件唤醒我的应用程序以响应不规则事件?我需要做什么才能使用核心蓝牙使其工作?
Microsoft 可能错误地实现了他们的 SDK。我能做些什么来知道问题是出在他们还是我自己?
最佳答案
听起来您还没有设置 Bluetooth Central Background Execution Mode 。如果您在 Info.plist
中指定此键,那么只要您收到 CBPeripheralDelegate
或 CBCentralManagerDelegate
的回调,您的应用就会被唤醒。这两个委托(delegate)都是在 Microsoft SDK 深处实现的。
关于iOS 后台蓝牙事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38230577/