禁用allowBackgroundLocationUpdates(CLLocationManager)在启用后不起作用
我的应用程序与连续的后台位置更新。 当然,它有所有的权限和其他的东西
allowsBackgroundLocationUpdates = true
最初,我想在后台使用NSProcessInfoPowerStateDidChange
通知对NSProcessInfoPowerStateDidChange
更改做出反应 。 并禁用allowsBackgroundLocationUpdates
停止更新位置,而无需调用stopUpdatingLocation
。
但是,我收到通知和设置后发现
allowsBackgroundLocationUpdates = false
在后台应用程序正在进行工作。
所以我走得更远,并确定, 禁用 allowsBackgroundLocationUpdates
即使在最初设置为true
前景 ,根本不工作。 应用程序继续在后台工作。
苹果关于此事的文件
你使用这个属性来启用和禁用基于你的应用行为的行为
从CLLocationManager类, allowsBackgroundLocationUpdates
属性的描述
将UIBackgroundModes设置为包含Info.plist中的“位置”时,只要调用-startUpdatingLocation以在后台继续,就必须在运行时将此属性设置为YES。 将此属性重置为NO相当于从UIBackgroundMode值中省略“位置”。
显示我提到的行为的简单项目在GitHub上。
所以这个问题,这是财产的故意行为吗?
当此属性的值为false时,应用程序会根据当前授权在前台或后台运行时正常接收位置更新。 更新仅在应用程序被暂停时停止,从而防止应用程序被唤醒来处理这些事件。 Apple API讨论 。
我认为物业讨论可以解决你的问题。