【发布时间】: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() 方法的页面时立即崩溃。“前台”和“后台”事件会正确触发(当它处于各自的状态时)。
我尝试过的事情:
- 设置 Info.plist 属性
- 启用后台模式:Xcode 中的位置更新。
我试图解决的潜在问题:
- 在应用程序的另一部分使用 React Native Geolocation 库来抓取一次位置。如果我能弄清楚这个库,我可以用 react-native-background-geolocation 替换其他库(react-native-geolocation)来做所有事情。
【问题讨论】:
-
你在 Xcode 中查找过日志吗?应用崩溃可能是原生错误。
-
原来你不能用iOS模拟器做后台任务。调用 start() 会使 iOS 模拟器崩溃,因为它使用后台任务 API 来告诉手机在进入后台时继续运行它。根据我的理解,调用此后台任务会导致应用崩溃。
标签: ios reactjs react-native location