2017-10-17 64 views
0

我需要编写一个应用程序,每次在靠近Eddystone信标时调用REST服务。 我的目标是iOS 9或更高版本,并在Swift中编写。当应用程序被终止/挂起时,iOS设备可以检测到Eddystone信标吗?

到目前为止,我已经设法让应用程序在应用程序处于前台并且应用程序在后台运行数小时后响应来自信标的广告。 然后,应用程序在后台几小时后,没有任何反应。

我怀疑该应用程序被操作系统杀死或暂停。

我尝试的第一件事是用CLLocationManager和CLBeaconRegion进行地理围栏。 但是经过Google搜索,我发现这只适用于iBeacon,而我的信标肯定会使用Eddystone协议。

根据苹果公司的文件,即使应用程序已被杀死(无论是由人员还是由操作系统),iBeacon上的地理围栏应该“唤醒”应用程序..我可以使用Eddystone信标有类似行为吗?

我想不会,但在这种情况下,我想一个明确的答案:)

感谢

顺便说一句,这个文档https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/RegionMonitoring/RegionMonitoring.html

会谈有时约灯塔和其他一些有关iBeacons,所以如果这只适用于iBeacons或不是非常清楚。鉴于UUID的格式,我认为它可以,但是..

回答

1

在监视CLBeaconRegion对象时,您可以使用iOS CoreLocation API在信标检测的背景中启动应用程序。 这只适用于iBeacon,不适用于Eddystone,因为CoreLocation只能检测iBeacon。

要在iOS上检测Eddystone,您必须使用CoreBluetooth API,它不提供此功能。

做你想做的事情的一种常用方法是使用交叉Eddystone和iBeacon的信标。使用iBeacon启动您的应用和Eddystone进行进一步处理。

+0

你能指点我一个官方的Apple文档,明确指出只有iBeacon可以将应用程序从睡眠/死亡状态中唤醒吗?以上文档对于非技术人员有点模糊,我需要向客户展示一个:) – zontar

+0

对不起,我确定没有这样的文档存在。 (不幸的是,你很难找到任何Google技术的参考,例如Eddystone和Apple的文档 - 他们喜欢假装它不存在。)但是,我可以告诉你,我与Google的设计工程师讨论了这个确切的问题。 Eddystone项目发布之前,我们同意上述解决方案是使用Eddystone在iOS上进行后台启动的方式。 – davidgyoung

+0

谢谢!你的话我记住了。 – zontar

相关问题