ios – Swift中BLE的背景扫描

ios – Swift中BLE的背景扫描,第1张

概述我试图让我的应用程序在后台扫描BLE设备,并在 Swift中搜索一些广告数据.我一直无法找到任何有关此内容的教程或问题. 基本上,当应用程序不在前台并且用户重新启动手机时,有没有办法在后台自动执行此 *** 作?: Obtaining Bluetooth LE scan response data with iOS 我希望你能指出我正确的方向.谢谢 第1步:为您的项目功能启用蓝牙背景模式 第2步:确保将相 我试图让我的应用程序在后台扫描BLE设备,并在 Swift中搜索一些广告数据.我一直无法找到任何有关此内容的教程或问题.

基本上,当应用程序不在前台并且用户重新启动手机时,有没有办法在后台自动执行此 *** 作?:
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的背景扫描所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1077461.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存