iOS 后台蓝牙事件

标签 ios swift bluetooth background microsoft-band

我正在创建一个 iOS 应用程序,它应该从 Microsoft Health Band 2 接收事件,特别是当用户点击手环上的按钮时,我的应用程序会收到通知。一切都配对、通信并且在前台工作得很好。

我运行我的 iOS 应用程序,然后点击主页按钮将其置于后台。如果我按下手环上的按钮,我的应用程序会将事件记录到调试控制台并将事件发送到服务器。

但是,如果我等待几分钟,然后在手机锁定的情况下再次按下按钮,则什么也不会发生。如果我将应用程序放在 iOS 设备上的前台,所有丢失的事件都会立即处理。

理论上是否可以让蓝牙 LE 配件唤醒我的应用程序以响应不规则事件?我需要做什么才能使用核心蓝牙使其工作?

Microsoft 可能错误地实现了他们的 SDK。我能做些什么来知道问题是出在他们还是我自己?

最佳答案

听起来您还没有设置 Bluetooth Central Background Execution Mode 。如果您在 Info.plist 中指定此键,那么只要您收到 CBPeripheralDelegateCBCentralManagerDelegate 的回调,您的应用就会被唤醒。这两个委托(delegate)都是在 Microsoft SDK 深处实现的。

关于iOS 后台蓝牙事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38230577/

相关文章:

ios - 通用协议(protocol) Swift 4 错误

c# - 使用 Xamarin Android 连接到蓝牙扫描仪

IOS swift 项目与 Facebook 集成 : tons of warnings

iOS - 我无法在 HockeyApp 中添加新设备

ios - UICollectionViewController - 展开可选值时意外发现 nil

swift - 更改另一个模块中 var 的初始值

Android+Arduino蓝牙通讯

java - 检测对蓝牙适配器所做的状态更改?

ios - 如何在完整尺寸的 UIView 上添加大背景图片?

iphone - 如果正在录制视频,如何提醒和停止尝试的 segue