【问题标题】:Find a specific iBeacon after i entered the Region (Background mode)进入区域后查找特定的 iBeacon(后台模式)
【发布时间】:2013-12-05 17:09:02
【问题描述】:

这个问题是关于应用程序何时处于后台 我有一个与 2 个 iBeacon 一起使用的应用程序(相同的 UUID,相同的主要,不同的次要)。

例如,第一个 iBeacon(次要 1)用于门。当应用程序在后台时,我会收到一条通知,告知我进入该区域。这工作正常。现在,例如,我走进商店,在某个时候是第二个 iBeacon(次要 2)。 如果我在第二个 iBeacon 的直接区域,应用程序应该触发通知。 (“嘿,你在收银台”)。 但是我读到当应用程序在后台时这是不可能的。它仅在我按下肩部按钮或主页按钮时才有效。 http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

所以问题:谁能给我一个提示如何实现这个用例。

【问题讨论】:

    标签: ios objective-c ios7 bluetooth-lowenergy ibeacon


    【解决方案1】:

    几件事:

    当您创建信标区域时,您可以仅匹配 UUID、UUID 和主要值,或 UUID、主要和次要值。

    如果您仅指定 UUID,您的信标进入/退出通知将不包含主要/次要值信息。

    同样,如果您创建一个具有 UUID 和主要但非次要值的区域,您的信标进入/退出消息将包括信标的 UUID 和主要值,但不包括次要值。

    最简单的做法是创建一个单独的区域,以达到您正在跟踪的唯一信标。然后,您将收到每个信标的单独进入/退出通知。

    如果您希望多个信标属于同一区域,但报告不同的主要或主要/次要值,则必须打开信标测距并等待测距调用。在测距调用中,您将获得与当前区域匹配的所有信标的信标对象数组(不是信标区域对象,CLBeacon 对象)。信标对象将包括该信标的实际 UUID、主要和次要。

    如果您在后台并且同时启用了信标监控和测距,您将收到一条 didEnterRegion 消息(或者可能是更改状态消息),然后是几秒钟的测距信息,然后您的应用将返回睡觉。

    当您的应用处于后台时,您唯一真正的选择是显示本地通知并希望用户再次唤醒您的应用。如果用户滑动该通知,系统会在需要时提示用户提供解锁凭据,然后将用户带回您的应用程序。

    【讨论】:

    • 好答案。我要补充的一件事是,当您收到监控通知时,您会在首次检测到 iBeacon(最远 50 米)时收到它,而不是基于任何特定的接近度。你无法控制这一点。如果您真的需要仅在“位于第二个 iBeacon 的直接区域”时才向用户提供背景通知,那么您就不走运了。根据特定接近度采取行动的唯一方法是在前台进行测距。正如邓肯所提到的,背景测距只持续几秒钟——不足以改变距离。
    • 抱歉耽搁了这么久。感谢您的回答。
    • 那么可以做些什么呢?我处于同样的情况,我只有在第一次进入信标密集区域时才会收到通知,而在后台,但这可能会在实际接近之前高达 50 米。有什么方法可以让我收到有关距离变化的通知?
    • 另外,我知道你只能监控 20 个区域,所以如果你使用 UUID 创建区域,主要和次要,我想你必须随时跟踪你附近的所有信标,当他们不靠近时停止监控他们并开始监控其他人 - 或者这怎么能工作?
    • @kanstraktar,您可能应该发布一个新问题,而不是在 cmets 中为其他人开始第二次讨论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多