后台特定 iBeacon 检测

Posted

技术标签:

【中文标题】后台特定 iBeacon 检测【英文标题】:Specific iBeacon Detection in Background 【发布时间】:2014-09-19 10:34:37 【问题描述】:

我一直在四处寻找我所面临问题的直接答案,但信息有点分散。根据答案,我不确定是否可能。

基本上我使用iBeacons 作为我的应用程序的组件。场景是这样的,你有一条有许多商店的大街。每家商店在面向街道的窗户上都有 1 个信标。用户的手机上有一个通用的购物应用程序。

当用户走上大街时,我希望用户在经过商店时收到通知。此通知会显示类似“查看MyShops 最新优惠和折扣”之类的内容,并提示您打开应用程序。这一切都是因为应用程序在后台。

所有信标都有一个与我的应用关联的一致 UDID。每个商店都有自己的主要标识符。

我希望通知特定于商店(具有特定的主要和次要信标),但我找不到确定在后台输入哪个信标的方法。

此外,有些商店可能关闭并且广播重叠,如果它们具有相同的 UDID,则进入区域的后台进程是否会为您进入的每个信标触发?

【问题讨论】:

【参考方案1】:

您可以使用一个通用应用来做您想做的事情,一旦用户点击本地通知,该应用就会启动其他商店特定的应用。

几点:

    您必须结合 CoreLocation 监控和测距 API 来执行此操作。监控将在信标检测时将应用程序唤醒到后台(但仅持续 10 秒),并且测距将通过 NSArray 每秒为您提供更新,其中包含所有可见信标以及完整的信标标识符和每个信标的距离估计。

    在测距回调中,您可以将估计距离与所有可见信标进行比较,以确定哪个最近(CLBeacon.accuracy)。最接近的是应该为商店发送本地通知的内容。

    不要将信标ProximityUUIDios 设备的唯一 UDID 混淆。两者没有任何关系。

【讨论】:

只有进入信标范围才触发测距吗?我设想一些商店的信标重叠,所以我想在靠近店门时触发信标。但是两个商店的信标范围会导致重叠,这意味着“商店 A”会触发通知,但同时您已经进入了“商店 B”的范围。这有意义吗? 是的,有道理,同一区域的信标重叠确实是个问题。如果您处于可以控制信标标识符的情况,则可以通过设置 20 个不同的区域(iOS 为每个应用程序允许的最大值)来解决此问题,每个区域具有不同的 UUID 或 UUID/主要组合。然后确保附近的所有节目都使用不同地区的信标。这样,当您经过商店时,您将获得进入/退出事件,并且您有新的机会在后台进行范围。不完美,但有帮助。

以上是关于后台特定 iBeacon 检测的主要内容,如果未能解决你的问题,请参考以下文章

后台 iBeacon 检测时间(家庭自动化用例)

检测到 iBeacon 时启动应用程序

iBeacons 在 iOS 中以后台模式扫描?

如何在后台应用程序和iphone重启时使用ibeacon[关闭]

iBeacon 实施 - 用例

iPhone 休眠时无法检测到 Beacon 设备。(进入后台)