[英]kill a app in switcher, then launch it from a local notification, launchOptions is nil in didFinishLaunchingWithOptions
[英]LaunchOptions in didFinishLaunchingWithOptions are nil after Application will be waked up from location
我确实在互联网上搜索过,找到了一些有同样问题的人,但没有人得到任何解决方案......所以我希望这里的任何人都是正在寻找的 GI..
1 - 我确实在后台模式中启用了“位置更新”和“后台获取”。
2 - 我确实在正确的位置调用了locationManager.startMonitoringSignificantLocationChanges()
,我在应用程序在终止后唤醒时写入和字符串到我的 Firebase 数据库的方式中检查了这一点。
3 - 我正在以正确的方式检查 launchOptions 中是否有位置键,就像 Apple 在他们的文档中一样,请参阅:
那么为什么我的 launchOptions 为零? 我不明白为什么会发生这种情况......因为应用程序正在被唤醒,错误不能出现在我的 locationManager 处理上..
我在 stackoverflow 上发现了这个,但我的 launchOptions 为零,所以代码没有进入 if... 位置更新,即使应用程序被杀死/终止
请帮忙。
看起来您没有在数据库中保存更改。
添加日志并检查发生了什么。
如果设备被密码锁定,则可以锁定数据库文件。 并且它可能发生在SignificantLocationChanges
。 我希望它的链接可以帮助您 - IOS 应用程序无法在使用密码锁定屏幕时在后台访问文件
PS 同样对于startMonitoringSignificantLocationChanges()
你不需要启用“位置更新”,它需要startUpdatingLocation()
startMonitoringSignificantLocationChanges 需要启用后台位置?
UPD: https : //developer.apple.com/documentation/corelocation/cllocationmanager/1423531-startmonitoringqualitylocati
如果您启动此服务并且您的应用程序随后被终止,则系统会在新事件到达时自动将应用程序重新启动到后台。 在这种情况下,传递给应用程序委托的应用程序( :willFinishLaunchingWithOptions :) 和应用程序( :didFinishLaunchingWithOptions :) 方法的选项字典包含关键位置,以指示您的应用程序由于位置事件而启动。 重新启动后,您仍必须配置位置管理器对象并调用此方法以继续接收位置事件。 当您重新启动定位服务时,当前事件会立即传递给您的委托。 此外,即使在您启动位置服务之前,您的位置管理器对象的位置属性也会填充最新的位置对象。
location 应该在你的launchOptions中,我建议只在控制台中打印launchOption。 并使用(可从 XCode -> Devices -> {your device} 查看)查看它,存在哪些键?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.