2017-10-16 116 views
2

我想使用React Native创建iOS应用程序。该应用程序的主要功能之一是它在后台不断运行。它还需要使用GPS btw(万一这很重要)。React Native iOS应用程序在重新启动时重新启动

我有一些开发者告诉我它不可能为iOS做到这一点,但我已经读过它是可行的。

这是可能在iOS环境中做的吗?主要是,如果应用程序在手机关机时运行,您可以在设备重新启动而不打开用户时打开应用程序吗?

我应该说我是一名RN新手,任何帮助都非常感谢。

回答

2

如果您的应用程序获取位置而不是位于前台的权限,那么您将获得定期更新和一些时间来处理它。

例如,如果您正在给驾驶指示。

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW10

如果你在后台获取位置不断没有良好的用户的利益,你可能会被拒绝。 Apple建议改用区域监控

iOS支持将位置事件传递到暂停或不再运行的应用程序。在后台交付位置事件支持其功能在没有它们的情况下会受到损害的应用程序,因此,配置您的应用程序只在接收后台事件时才会为用户带来实实在在的好处。例如,转由转动的导航应用程序需要随时跟踪用户的位置,并通知用户何时该做出下一个转折。如果您的应用可以使用替代方法(如区域监控),则应该这样做。

我不知道RN如何包装这种行为,但无论它做了什么(或者插件可能做什么),iOS的核心行为就是如何在该URL中描述它。

+0

谢谢Lou。我很感激 :) – Frub

1

I(至少在iOS 11.2模拟器)是手机重启后自动重新启动应用程序(和位置跟踪)昨日证实作品。

关键是需要startMonitoringSignificantLocationChanges才能在重新启动后唤醒应用程序。对我来说,困难的部分是搞清楚什么时候打开它,因为我找不到一个可靠的方法来检测手机何时重新启动或运行任何代码。但是,根据初始测试,它看起来像startMonitoringSignificantLocationChanges是独立的,并且不会对通常的位置更新产生负面影响,所以现在我只是一直保持它的状态,并根据Core Motion检测到的活动切换startUpdatingLocation/stopUpdatingLocation

其他要求与后台任何位置跟踪相同,即处理权限并且不会处理太多。 Apple documentation说明如何检测应用程序是否由位置事件重新启动。