Geofence iOS8:需要iOS Geofencing的背景模式

Geofence iOS8 : Require Background Mode for iOS Geofencing

我在应用程序中使用了地理围栏。

地理围栏功能说明:

应用程序在进入或退出区域时具有两种功能:

  • 重置围栏:
    如果用户将输入该区域并且该区域具有重置围栏功能,则应用将调用一个Web服务并获取新的围栏列表。此功能也应在后台模式下工作。

  • 应用程式开启:
    如果用户将进入该区域并且该区域具有app_open的功能,则app将

    1
    2
     *a. Show alert, if the app is in foreground mode*
     *b. Show notification, if the app is in background mode*
  • 我已经使用区域监视来实现此功能,并且也不想使用重大的位置更改,因为该应用程序设置了大约100至200米半径的围栏。

    现在我的问题是

  • 我是否应该使用后台模式"用于位置更新的应用程序注册"来监视区域穿越
  • 我使用以下代码在后台模式下调用"重置围栏"的Web服务。

    -(无效)beginBackgroundUpdateTask
    {
    self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^ {
    [self endBackgroundUpdateTask];
    }];
    }

    -(无效)endBackgroundUpdateTask
    {
    [[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask];
    self.backgroundUpdateTask = UIBackgroundTaskInvalid;
    }

  • 因此,由于[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandle,我是否应在info.plist中应用任何设置。

    请进一步指导我。我已经在互联网上进行了很多搜索,但仍然找不到上述两个问题的任何具体答案。

    注意:由于后台模式"位置更新",该应用已被苹果拒绝。请建议我这样的方式,以便苹果不会拒绝该应用程序。

    原因如下。

    2.16:多任务应用程序只能将后台服务用于其预期目的:VoIP,音频播放,位置,任务完成,本地通知等。----- 2.16 -----
    我们发现您的应用使用后台模式,但不包含要求该模式持续运行的功能。此行为不符合《 App Store审查指南》。
    我们注意到您的应用在Info.plist的UIBackgroundModes项中声明了对位置的支持,但其中不包含需要永久位置的功能。
    当应用程序在后台运行时,添加需要持续使用实时位置更新的功能,或者从UIBackgroundModes键中删除"位置"设置,将是合适的。如果您的应用程序不需要持续的实时位置更新,则建议使用重大更改位置服务或区域监视位置服务。

    提前非常感谢。


    出于同样的原因,我们的应用被拒绝了。 如果您要做的只是区域监视,则不需要位置更新后台模式。 我们将其关闭,并且我们的区域监控按需工作。 即使应用未运行,当用户进入该区域时,它也会由iOS启动。 我们重新提交了该应用,该应用已获得批准。