iBeacon百货商店场景 - 测距与监控

时间:2013-12-08 21:46:16

标签: ibeacon clregion

所以我们正在尝试将一个场景与iBeacons结合起来,我认为我们在背景中遇到了测距和监控之间的差异,现在我不确定我们想做什么是可能的。

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

由于

1 个答案:

答案 0 :(得分:2)

是的,你可以这样做。诀窍是你需要同时组合两个测距和监控。需要进行监控才能将应用程序启动到后台。需要测量来获得您看到的信标的特定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并将其缓存在您的应用程序中,这样即使网络中断也可以使用。

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