2014-10-08 80 views
0

我正在開發具有巡視模式選項的信標應用程序。因此,當用戶點擊開關打開巡演,我創建燈塔地區,使用下面的代碼,我聽信標停止測距信標區域

NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:beacon.beaconID]; 
CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid major:[beacon.major integerValue] minor:[beacon.minor integerValue] identifier:beacon.identifier]; 

[self.locationManager startMonitoringForRegion:region]; 
region.notifyEntryStateOnDisplay = YES;  
region.notifyOnEntry = YES; 
region.notifyOnExit = YES; 
[self.locationManager startRangingBeaconsInRegion:region]; 

現在停止測距,我知道我必須使用

[self.locationManager stopRangingBeaconsInRegion:region]; 

但是,如何獲得創建用於監控的相同CLBeaconRegion?我應該將CLBeaconRegion保存在數組中嗎?

回答

0

CLLocationManager有一個名爲rangedRegions的屬性,它是當前排列的所有區域的NSSet。所以如果你做這樣的事情:

for (CLBeaconRegion *region in self.locationManager.rangedRegions) { 
    [self.locationManager stopRangingBeaconsInRegion:region]; 
} 

如果你想停止測量所有地區。

0

讓我告訴你,我們如何首先測量所有可用信標的距離,然後如何監測特定信標。

NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:beacon.beaconID]; 

    CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:beacon.identifier]; 

    [self.locationManager startRangingBeaconsInRegion:region]; 

這將給你在與uuid匹配的範圍內的所有可用信標。

然後,你需要開始監測特定信標。(說燈塔)

 CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:beacon.uuid major:[beacon.major integerValue] minor:[beacon.minor integerValue] identifier:beacon.identifier]; 

    [self.locationManager startMonitoringForRegion:region]; 

    region.notifyEntryStateOnDisplay = YES;  
    region.notifyOnEntry = YES; 
    region.notifyOnExit = YES; 

當你進來或燈塔地區熄滅這將通知您

讓我知道如果別的你需要