【问题标题】:iBeacon Department Store Scenario - Ranging vs. MonitoringiBeacon 百货商店场景 - 测距与监控
【发布时间】:2013-12-25 21:47:52
【问题描述】:

所以我们正在尝试使用 iBeacons 组合一个场景,我认为我们陷入了测距和后台监控之间的差异,现在我不确定我们想要做什么是可能的。

我们有 500 家商店要部署 iBeacon。信标的目的是通过通知和优惠券(有时)向客户致意。我们想要做的是使用单个 UUID,主要是商店编号,次要是商店类型(普通商店与儿童商店。儿童商店可以连接到普通商店)。理想情况下,一旦找到带有我们 UUID 的 iBeacon,我们希望我们的应用程序从我们的网站中提取特定于主要编号(商店编号)的 XML 文件,显示通知欢迎消息(可能说明“我们为您提供优惠券”取决于 xml 文件的内容),并将 xml 文件数据保存到应用程序,以便用户在打开应用程序时可以检索优惠券。这一切似乎都可以在前台应用程序中实现,但我们似乎很难让它在后台工作。我所描述的是否可能,我是否应该考虑另一种方法来做到这一点?

谢谢

【问题讨论】:

    标签: ibeacon clregion


    【解决方案1】:

    是的,您可以这样做。诀窍是您需要同时结合 both 测距和监控。需要监控才能将您的应用程序启动到后台。需要测距才能获取您看到的 Beacon 的特定 ID。

    这样设置:

    CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:@"blah"];
    region.notifyOnEntry = YES;
    [self.locationManager startMonitoringForRegion:region]; 
    [self.locationManager startRangingBeaconsInRegion:region]; 
    

    一旦发生这种情况,您将在应用程序重新进入睡眠状态之前收到大约五秒钟的测距回调,并且此方法将每秒调用一次:

    -(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
        if (!_firstOneSeen) { 
          _firstOneSeen = true;
          // Do something with beacons array here.  read out the major/minor and get the 
          // notification message from your XML web service                   
       }
    }
    

    注意两点:

    1. 在后台监控 iBeacon 区域可能有点棘手,而且获得回调所需的时间可能比您想象的要长。看到这个detailed discussion.

    2. 您的应用从唤醒到重新进入睡眠状态只有五秒钟的时间,因此您的网站可以更好地快速响应。一个更安全的跨网络丢失的想法是预先获取 XML 并将其缓存在您的应用程序中,以便即使存在网络丢失也可以使用。

    我的公司 Radius Networks 制作了一个名为 ProximityKit 的库和 Web 服务,它可以预先缓存特定于信标的键/值对,您可以使用 Web 浏览器配置这些键/值对。这样,您不必自己编写 Web 服务。

    【讨论】:

    • 大卫,我想知道一件事:你能监控信标,然后在你的 didEnterRegion 方法中开始测距吗?当在后台触发 didEnterRegion 时,您还会收到测距电话吗?没试过,不知道行不行。
    • 我没试过,但我猜它会起作用。这种方法的缺点是您会损失一秒钟的后台处理时间。此外,它与从一开始就启动 Ranging 具有类似的效果,因为在四秒钟内,您的应用程序将在后台进入睡眠状态,无论如何启用 Ranging!确实没有理由不从一开始就启用测距 - 它不会导致在后台更频繁地进行扫描,因此对电池没有影响。
    • 完美答案!。我想添加额外的信息,即应用程序在通过监控事件启动时在后台运行 10 秒(在 iOS9 中测试)。
    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多