
基本上,当应用程序不在前台并且用户重新启动手机时,有没有办法在后台自动执行此 *** 作?:
Obtaining Bluetooth LE scan response data with iOS
我希望你能指出我正确的方向.谢谢
解决方法 第1步:为您的项目功能启用蓝牙背景模式第2步:确保将相应的内容添加到info.pList文件中
这是pList代码,如果它没有添加它:
<key>uibackgroundmodes</key> <array> <string>audio</string> <string>bluetooth-central</string> </array>
然后,当您在CBCentralmanager上调用“scanForperipheralsWithServices”时,您必须指定要扫描的服务数组.你不能传递一个空数组.如果你传递的是nil,它仍会扫描,而不是在后台.
所以指定一个服务UUID的数组是这样的:
let arrayOfServices: [CBUUID] = [CBUUID(string: "8888")]self.myBluetoothManager?.scanForperipheralsWithServices(arrayOfServices,options: nil)
现在,如果你关心选项,你可以传递一个选项词典来代替我在上面传递的nil.大多数情况下,这用于指定您是否要在连接之前连续查看设备RSSI,或者只是想要广告数据包一次.放一个:
println(advertisementData["kCBAdvDataLocalname"] as! String) println(advertisementData["kCBAdvDataManufacturerData"] as! NSData)
在“dIDdiscoverPeripheral”委托方法中观察不同的行为.
如果您想要重复键,这是您将传递的词典:
let dictionaryOfOptions = [CBCentralManagerScanoptionAllowDuplicatesKey : true]self.myBluetoothManager?.scanForperipheralsWithServices(arrayOfServices,options: dictionaryOfOptions)
现在Apple says that when your app goes in the background mode它将此扫描选项默认为false但从iOS 8.3开始我看到它继续扫描重复键.
关于背景执行的最后一点说明.如果iOS决定暂停您的应用,扫描将停止.如果有一堆应用正在运行,我已经看到这种情况会在30秒内发生.
总结以上是内存溢出为你收集整理的ios – Swift中BLE的背景扫描全部内容,希望文章能够帮你解决ios – Swift中BLE的背景扫描所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)