我想使用React Native创建一个iOS应用。该应用程序的主要功能之一是它在后台不断运行。它还需要使用GPS btw(如果这很重要)。
我有很多开发人员告诉我它不可能为iOS做这个,但我已经读过它可以做到。
这可以在iOS环境中完成吗?主要是,如果应用程序在手机关机时运行,您可以在设备重启而没有用户打开时将其打开吗?
我应该说我是RN新手,非常感谢任何帮助。
答案 0 :(得分:2)
如果您的应用获得了在不在前台的位置获取位置的权限,那么您将获得定期更新并有一些时间来处理它。
例如,如果您要提供行车路线。
如果您不经常在后台获取该位置,则可能会被拒绝。 Apple建议进行区域监控
iOS支持将位置事件传递给已暂停或不再运行的应用。在后台交付位置事件支持在没有它们的情况下功能受损的应用程序,因此将应用程序配置为仅在这样做时为用户提供实际好处才能接收后台事件。例如,逐向导航应用程序需要始终跟踪用户的位置,并在下次转弯时通知用户。如果您的应用可以使用其他方式(例如区域监控),则应该这样做。
我不知道RN如何包装这种行为,但无论它做什么(或者插件可能做什么),核心iOS行为都是在该URL中描述的行为。
答案 1 :(得分:1)
我昨天(至少在iOS 11.2模拟器上)验证了手机重启后自动重启应用程序(以及位置跟踪)。
关键点是startMonitoringSignificantLocationChanges
需要在重启后唤醒应用程序。对我来说,困难的部分是确定何时打开它,因为我找不到一种可靠的方法来检测手机何时重启或在那时运行任何代码。但是,根据初始测试,startMonitoringSignificantLocationChanges
似乎是独立的,并且不会对通常的位置更新产生负面影响,因此现在我只是将其保持开启并切换startUpdatingLocation
/ stopUpdatingLocation
基于Core Motion检测到的活动。
否则要求与后台的任何位置跟踪相同,即处理权限并且不会处理太多。 Apple documentation解释了如何检测应用程序是否因位置事件而重新启动。
答案 2 :(得分:0)
这是一个反应原生模块,它基本上可以帮助您实现您所描述的内容:https://github.com/transistorsoft/react-native-background-geolocation