【发布时间】:2014-11-24 22:14:39
【问题描述】:
我在我的应用程序中使用了地理围栏。
地理围栏功能说明:
应用在进入或离开区域时具有两种类型的功能:
重置围栏: 如果用户进入该区域并且该区域具有重置围栏的功能,则应用程序将调用一个 Web 服务并获取新的围栏列表。此功能也应该在后台模式下工作。
-
应用打开: 如果用户将进入该区域并且该区域具有 app_open 的功能,则应用将
*a. Show alert, if the app is in foreground mode* *b. Show notification, if the app is in background mode*
我已使用区域监控来实现此功能,并且也不想使用重大的位置更改,因为该应用设置了大约 100 到 200 米半径的围栏。
现在我的问题是,
- 我是否应该使用后台模式“应用程序注册位置更新”来监控区域穿越
-
我已使用以下代码在后台模式下调用“重置围栏”的网络服务。
-(void) beginBackgroundUpdateTask { self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ [self endBackgroundUpdateTask]; }]; }
-(void) 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 background-process geofencing