繁体   English   中英

在从位置唤醒应用程序后,didFinishLaunchingWithOptions 中的 LaunchOptions 为零

[英]LaunchOptions in didFinishLaunchingWithOptions are nil after Application will be waked up from location

我确实在互联网上搜索过,找到了一些有同样问题的人,但没有人得到任何解决方案......所以我希望这里的任何人都是正在寻找的 GI..

1 - 我确实在后台模式中启用了“位置更新”和“后台获取”。

在此处输入图片说明

2 - 我确实在正确的位置调用了locationManager.startMonitoringSignificantLocationChanges() ,我在应用程序在终止后唤醒时写入和字符串到我的 Firebase 数据库的方式中检查了这一点。

3 - 我正在以正确的方式检查 launchOptions 中是否有位置键,就像 Apple 在他们的文档中一样,请参阅:

https://developer.apple.com/documentation/uikit/app_and_environment/responding_to_the_launch_of_your_app

在此处输入图片说明

那么为什么我的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM