【问题标题】:React Native iOS app restart on rebootReact Native iOS 应用在重启时重启
【发布时间】:2018-03-28 10:17:08
【问题描述】:

我想使用 React Native 创建一个 iOS 应用。该应用程序的主要功能之一是它在后台持续运行。它还需要使用 GPS 顺便说一句(如果这很重要)。

我有一些开发人员告诉我,这在 iOS 上是不可能的,但我读到它是可行的。

这可以在 iOS 环境中进行吗?主要是,如果app是在手机关机状态下运行的,能不能在用户不打开的情况下,重启设备后打开?

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

【问题讨论】:

    标签: ios iphone swift xcode react-native


    【解决方案1】:

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

    例如,如果您要提供行车路线。

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

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

    iOS 支持将位置事件传递给暂停或不再运行的应用。在后台传递位置事件支持没有它们功能会受损的应用程序,因此请将您的应用程序配置为仅在这样做时才接收后台事件,从而为用户带来切实的好处。例如,逐向导航应用程序需要随时跟踪用户的位置,并在需要进行下一个转弯时通知用户。如果您的应用可以使用其他方式(例如区域监控),那么它应该这样做。

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

    【讨论】:

    • 谢谢娄。我很感激:)
    【解决方案2】:

    我昨天验证了(至少在 iOS 11.2 模拟器上)在手机重启后自动重启应用(和位置跟踪)是可行的。

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

    其他要求与后台任何位置跟踪的要求相同,即处理权限并且不要处理太多。 Apple documentation 解释了如何检测应用被位置事件重新启动。

    【讨论】:

      【解决方案3】:

      这是一个 react native 模块,它基本上可以帮助您实现所描述的内容:https://github.com/transistorsoft/react-native-background-geolocation

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-29
        • 1970-01-01
        • 2018-08-22
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        • 1970-01-01
        相关资源
        最近更新 更多