【问题标题】:LaunchOptions in didFinishLaunchingWithOptions are nil after Application will be waked up from location从位置唤醒应用程序后,didFinishLaunchingWithOptions 中的 LaunchOptions 为零
【发布时间】:2020-04-22 18:12:51
【问题描述】:

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

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 是 nil,所以代码没有进入 if... Location update even when app is killed/terminated

请帮忙。

【问题讨论】:

  • 您好,您找到解决方案了吗?我也有同样的问题???
  • @aledap 我注意到,我的应用程序在移动时是从后台启动的,所以它确实可以工作,但我的启动选项总是为空,所以我确实保存了用户默认值并通过启动检查是否此值为 true,并根据此运行一些代码,但这仅适用于我只有一个原因从后台启动,如果您有多个原因,则更难知道应用程序启动的原因。 ..

标签: ios swift location


【解决方案1】:

您似乎没有在数据库中保存更改。
添加日志并检查发生了什么。
如果使用密码锁定设备,则可以锁定数据库文件。 SignificantLocationChanges 可能会发生这种情况。我希望它链接对你有帮助 - IOS app unable to access files in background when screen locked with passcode

附:同样对于startMonitoringSignificantLocationChanges(),您不需要启用“位置更新”,它需要startUpdatingLocation()
startMonitoringSignificantLocationChanges needs background location enabled?

更新: https://developer.apple.com/documentation/corelocation/cllocationmanager/1423531-startmonitoringsignificantlocati

如果您启动此服务并且您的应用随后被终止,则 如果有新的应用程序,系统会自动将应用程序重新启动到后台 事件到来。在这种情况下,选项字典传递给 应用程序(:willFinishLaunchingWithOptions:) 和 应用程序的 application(:didFinishLaunchingWithOptions:) 方法 委托包含指示您的应用程序的关键位置 由于位置事件而启动。重新启动后,您仍然必须 配置位置管理器对象并调用此方法继续 接收位置事件。当您重新启动定位服务时, 当前事件会立即传递给您的代表。此外, 您的位置管理器对象的位置属性已填充 甚至在您开始定位之前使用最新的定位对象 服务。

location 应该在你的 launchOptions 中,我建议只在控制台中打印 launchOption。并通过(可从 XCode -> Devices -> {your device} 查看)查看它,存在哪些键?

【讨论】:

  • 谢谢,但我不明白你的意思,写入数据库完美无缺,只是在应用程序唤醒进入后台模式时未设置 locationKey。而且我确实读过,如果启用了位置更新的背景模式复选框,则此键只会在字典中。如果我有什么误解,请告诉我。我将“wokeUp”放入数据库的第一行正在运行。只有当我想创建一个包含所有键的列表时才会失败,因为launchOptions 中没有键。
  • @alarsut 我建议只在控制台中打印 launchOption。并通过(可从 XCode -> Devices -> {your device} 查看)查看它,存在哪些键?
  • 可以联系我吗?只需给我写一封电子邮件到 kochhilfeaticlouddotcom 并使用您的 Skype 名称或您拥有的任何内容。我没有得到这个工作。未显示日志,并且 launchOptions 为零。如果我们得到一个解决方案,我会在我的帖子下添加解决方案,标记为更新...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 2016-05-14
相关资源
最近更新 更多