即使应用程序未运行,如何使用有效的地理围栏? [复制]

Posted

技术标签:

【中文标题】即使应用程序未运行,如何使用有效的地理围栏? [复制]【英文标题】:How to have a working Geofence even if the app is not running? [duplicate] 【发布时间】:2014-04-22 05:26:03 【问题描述】:

我正在创建一个位置感知应用程序。我已经能够创建地理围栏, 当我在我的 iPhone 中测试它时,我注意到当应用程序在前台和后台运行时调用回调方法 -didEnterRegion-didExitRegion。但是当我杀死应用程序(意味着应用程序状态为“未运行”)时,不会调用所述方法回调。

那么,我在这里缺少什么?有什么我需要做的配置吗?有什么想法吗?谢谢!

【问题讨论】:

我在问是否有解决方法,即使应用程序没有运行,应用程序也能够通知用户。因为 Foursquare 在 ios7 中可以做到这一点。谢谢... 我不知道 Foursquare 是如何做到的,但请参阅 devforums.apple.com/message/906456#906456 - 苹果人 pmarcos 确认这在 iOS7 中不再有效。 (这也与重复问题的答案相关联) 您将其标记为重复项,但我的问题是进一步澄清是否有办法(意味着解决方法)在 Applciation 终止时制作有效的地理围栏,因为如果 Foursquare 可以做到,为什么我们不能吗?对吗? 【参考方案1】:

这是正确的行为,具体取决于您“杀死”应用程序的方式。如果您通过从多任务视图(双击主页)向上滑动来停止应用程序,那么 iOS 7 会将此解释为您根本不希望应用程序在前台或后台运行。如果应用程序在设备需要更多内存时由于处于后台而被“杀死”,那么它将继续在后台模式下运行。

参考这个答案 - Region monitoring in ios 7

为了进行测试,您可以使用 Xcode 停止您的应用程序,在您的应用程序暂停时模拟内存不足的情况,或调用 exit() 进行测试。

【讨论】:

所以你的意思是,当应用程序终止时我无法收到任何通知?但是我的客户要求需要它在用户检测到其位置进入某个区域时通过本地通知进行通知......你能帮忙吗?谢谢 根据 Apple 开发者论坛上的这个线程 devforums.apple.com/thread/209302?tstart=0,这是 iOS 7 中的更改行为。如果您的应用只是暂停,您应该会收到后台通知,但如果它被终止则不会。 您是否启用了重要的位置更改通知?另外,我仍然不清楚您是如何终止应用程序的?是从 App Switcher 向上滑动吗? 是的,我正在从 App Switcher 向上滑动。这有点奇怪,因为 Foursquare 能够做到。即使我的应用没有运行,我也会收到通知... 但是您是否真的通过向上滑动“杀死”了 Foursquare 或者您只是没有启动它 - 有区别

以上是关于即使应用程序未运行,如何使用有效的地理围栏? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

实施地理围栏 - 在应用程序未运行时接收地理围栏转换事件

Android Oreo 上未添加地理围栏

如何提高 Android 地理围栏进入/退出通知的一致性?

Android 地理围栏示例应用程序仅在使用 GPS 打开另一个应用程序时才有效

应用程序在后台时未触发地理围栏通知

关闭应用程序时的 iOS 7.1 CoreLocation 和地理围栏