我正在开发一个使用Kontaktio信标的iOS应用程序。在前台模式下,我将beaconManager.startRangingBeacons(for: region)
放在func application(...)
中,这使信标在前景中处于最佳位置。同时,我也想知道如何使信标范围也可以在后台模式下工作。
我已经阅读了一些StackOverflow帖子。然后,在Info.plist上,将“应用程序不在后台运行”设置为“否”,并在<string>bluetooth-central</string>
下添加了<string>location</string>
和UIBackgroundModes
。但是,添加完这些后,我的应用仍将在后台模式下停止测距信标。
Kontakt.setAPIKey("MY API KEY")
beaconManager = KTKBeaconManager(delegate: self)
beaconManager.requestLocationAlwaysAuthorization()
let region = KTKBeaconRegion(proximityUUID: UUID(uuidString: "my beacon region uuid")! as UUID, identifier: "region-identifer")
beaconManager.startMonitoring(for: region)
beaconManager.startRangingBeacons(in: region)
我将这段代码放在func applicationDidEnterBackground(...)
中,我将其复制/粘贴从func application(...)
到func applicationDidEnterBackground(...)
的相同代码(将触发信标测距事件)。我不确定这是否是在后台进行测距的正确方法,还是我错过了一些事情。