【问题标题】:React Native Background Geolocation - iOSReact Native 背景地理定位 - iOS
【发布时间】:2021-12-29 20:47:50
【问题描述】:

我正在尝试构建一个在用户驾驶汽车时跟踪用户位置的应用。我可以通过使用 react-native-geolocation 获取用户的位置,而它是运行的主应用程序(在前台),但我试图弄清楚如何在后台使用它,这样他们就不需要是使用应用程序来跟踪它们(有点像正在运行的应用程序,甚至是其他地图应用程序。

我正在使用库 @mauron85/react-native-background-geolocation。我正确设置了权限(我相信),但遇到了一个奇怪的错误。为了简短起见,我不会粘贴我正在使用的整个文件,但我基本上使用的是本示例中使用的代码:https://gist.github.com/jonasgroendahl/c4fad8fa48f955b993d928e1c36d76f7

当我在 BackgroundGeolocaiton.checkStatus() 调用中调用 BackgroundGeolocation.start() 时出现问题。事件侦听器“前台”、“后台”和“停止”都可以工作。检查状态产生以下值:status.isRunning -> false, status.locationServicesEnabled -> true, status.authorization -> 99。

当我调用 start() 时,应用程序立即退出并崩溃。没有错误被抛出,因此很难确定问题所在。当我重新打开应用程序时,它会在我到达调用 start() 方法的页面时立即崩溃。“前台”和“后台”事件会正确触发(当它处于各自的状态时)。

我尝试过的事情:

  1. 设置 Info.plist 属性
  2. 启用后台模式:Xcode 中的位置更新。

我试图解决的潜在问题:

  1. 在应用程序的另一部分使用 React Native Geolocation 库来抓取一次位置。如果我能弄清楚这个库,我可以用 react-native-background-geolocation 替换其他库(react-native-geolocation)来做所有事情。

【问题讨论】:

  • 你在 Xcode 中查找过日志吗?应用崩溃可能是原生错误。
  • 原来你不能用iOS模拟器做后台任务。调用 start() 会使 iOS 模拟器崩溃,因为它使用后台任务 API 来告诉手机在进入后台时继续运行它。根据我的理解,调用此后台任务会导致应用崩溃。

标签: ios reactjs react-native location


【解决方案1】:

事实证明,您无法使用 iOS 模拟器执行后台任务。调用 start() 会使 iOS 模拟器崩溃,因为它使用后台任务 API 来告诉手机在进入后台时继续运行它。据我了解,调用此后台任务会导致应用崩溃。

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 2016-10-26
    • 2019-07-15
    • 2023-03-20
    • 2019-06-18
    • 2018-09-03
    • 2016-01-25
    • 2020-08-29
    • 2016-12-23
    相关资源
    最近更新 更多