stopMonitoringForRegion 是只停止重复的区域还是也停止原始区域?



我正在从事一个信标监控项目,目前正在研究 stopMonitoringForRegion 方法.我正在做的是,复制原始区域并对其进行新的监视。30 - 60 秒后,我停止复制的区域:

[self.locationManager stopMonitoringForRegion:self.duplicatedRegion];

因此,原始和复制区域次要和主要ID是相同的。当我停止监视重复的区域时,我是否也停止了原始区域?因为次要和主要 ID 是相同的。原始区域和复制区域之间的唯一区别是标识符。原始的具有供应商GUID,而复制的具有"testRegion"字符串。

self.duplicatedRegion = [[CLBeaconRegion alloc] initWithProximityUUID:self.originalRegion.proximityUUID
major:[self.originalRegion.major intValue]
minor:[self.originalRegion.minor intValue]
identifier:@"testRegion"];
self.duplicatedRegion.notifyEntryStateOnDisplay = NO;
self.duplicatedRegion.notifyOnEntry = YES;
self.duplicatedRegion.notifyOnExit = YES;
[self.locationManager startMonitoringForRegion:self.duplicatedRegion];

我之所以问这个问题,是因为当我停止监视重复的区域时,该应用程序不再收到任何进入和退出区域事件。在我的代码中,我正在检查原始区域是否正在被监视,是的,它位于self.locationManager monitoredRegions数组上。此外,我从不停止原始区域。我只是开始并停止重复的那个。

关键点是为identifier字段使用不同的字符串:

self.duplicatedRegion = [[CLBeaconRegion alloc] initWithProximityUUID:self.originalRegion.proximityUUID                                                      
major :[self.originalRegion.major intValue]                                                 
minor :[self.originalRegion.minor intValue]                                                        
identifier :@"testRegion"];

如果originalRegionidentifiertestRegion,而重复的具有相同的值,则会导致您描述的症状。 这是因为CoreLocation 使用identifier字段来指示Region对象相同,从而允许您将一个对象替换为另一个对象。

要同时激活两个区域,只需提供不同的identifier值。

相关内容

  • 没有找到相关文章

最新更新