iBeacon百货场景-测距与监控

  • 本文关键字:监控 iBeacon ibeacon clregion
  • 更新时间 :
  • 英文 :


因此,我们正试图用iBeacons构建一个场景,我认为我们正被后台测距和监控之间的差异所困扰,现在我不确定我们想做什么是可能的。

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

感谢

是的,你可以这样做。诀窍是,您需要同时将测距和监控结合起来。需要进行监控才能在后台启动您的应用程序。需要进行测距才能获得你看到的信标的特定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 Regions可能有点棘手,而且可能需要比你想象的更长的时间才能获得回调。请参阅此详细讨论。

  2. 从你的应用程序被唤醒到恢复睡眠,你只有五秒钟的时间,所以你的网站可以更快地做出响应。一个更安全的解决网络中断的方法是提前获取XML并将其缓存在应用程序中,这样即使出现网络中断,它也可以随时使用。

我的公司Radius Networks制作了一个名为ProximityKit的库和网络服务,它可以提前缓存特定于信标的密钥/值对,您可以使用web浏览器进行配置。这样,您就不必自己编写web服务。

相关内容

  • 没有找到相关文章

最新更新