【发布时间】:2017-03-08 06:15:18
【问题描述】:
当应用程序处于后台和手机屏幕关闭时,我需要继续扫描来自外围设备的广播。从后台扫描成功,但当手机屏幕关闭时,我无法扫描(无法触发 didDiscoverPeripheral)广播。
到目前为止,我已经在applicationDidEnterBackground 内部实现了beginBackgroundTaskWithExpirationHandler,这就是我能够在后台扫描的方式。那我该怎么做呢?
【问题讨论】:
-
您应该在应用功能中指定蓝牙后台模式。如果这样做你不需要使用
beginBackgroundTaskWithExpirationHandler,但是你不能使用duplicates key,你必须扫描特定的服务UUID并且发现速度会更慢,尤其是在屏幕关闭时 -
这很奇怪,它已经启用了;使用蓝牙 LE 配件并充当蓝牙 LE 配件。我检查了所有与蓝牙相关的框。另外,我指定了我想要发现的特定服务 UUID。但遗憾的是,即使在后台它也不起作用,所以我使用
beginBackgroundTaskWithExpirationHandler使后台工作。 -
您是在尝试发现以前从未见过的外围设备,还是在尝试连接到以前见过的外围设备?
-
我正在尝试发现一个我以前从未见过的外围设备。这就像一个普通的扫描,但我无意连接,只是阅读广播。
-
您等待在后台模式下发现外围设备的时间。在后台发现外围设备可能需要比在前台多 60 倍的时间。 stackoverflow.com/questions/20427230/…
标签: ios objective-c bluetooth bluetooth-lowenergy core-bluetooth