ios – 可以[LocationManager didEnterRegion]获得灯塔的主要和次要?

前端之家收集整理的这篇文章主要介绍了ios – 可以[LocationManager didEnterRegion]获得灯塔的主要和次要?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我从Roximity获得了一些信标,从我收集到的信号中,所有的Roximity信标都具有相同的UUID.我知道我可以使用[locationManager:didRangeBeacons:inRegion:]来获取主要和次要值,但是如果我设置[locationManager didEnterRegion]来发送推送通知,并且我的用户走过另一个与其他人相关的Roximity信标. app,如何在[locationManager didEnterRegion]中确定这个?

解决方法

你基本上有两个选择.

>定义您正在监控的区域,以便它们包含您的特定主要和次要编号.主要限制是iOS只允许您同时监控20个区域,这意味着您只能为20个不同的iBeacons执行此操作:

CLBeaconRegion *region1 = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"8deefbb9-f738-4297-8040-96668bb44281"] major:1201 minor:3211 identifier:@"beacon1"];    
[_locationManager startRangingBeaconsInRegion:region1];    
CLBeaconRegion *region1 = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"8deefbb9-f738-4297-8040-96668bb44281"] major:1798 minor:2122 identifier:@"beacon2"];    
[_locationManager startRangingBeaconsInRegion:region2];
...

>仅基于UUID监视区域,但同时也在同一区域上进行测距.您将看到针对您看到的每个特定iBeacon的测距回调. (即使在后台,您也会在进入区域后大约5秒钟获得此信息.)在测距回调中,您可以检查所看到的信标的主要/次要编号,并将它们与您拥有的信标列表进行比较.只有在看到匹配项时才会执行特定操作.如果您继续添加信标,则可能难以在应用中保持此列表最新,因此您可能希望使用像ProximityKit这样的Web服务,以便将您的iBeacon标识符列表存储在云中.

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
   for (CLBeacon *beacon in beacons) {
     if ([self isMyBeaconWithMajor: beacon.major minor: beacon.minor]) {
        // Yes,this is my beacon!  Do something special here
     }
   }
}

-(BOOL)isMyBeaconWithMajor: (NSNumber *)major minor: (NSNumber *)minor {
  // TODO: write code here that returns YES if the major and minor belong to you
}

另一个最终的可能性(不可否认的是,你提出的问题)是使用带有自定义UUID的信标,这使事情变得更加容易.完全披露:我是一家公司,销售带有可定制标识符的iBeacons.

猜你在找的iOS相关文章