如何停止信标监控

时间:2015-09-03 15:08:36

标签: ios ibeacon

我开发了一个ios应用程序,它有两个屏幕,应用程序在第一个屏幕上扫描信标(正常工作)。但是当我导航到第二个屏幕时,它仍然会扫描信标。我的要求是在第二个屏幕上停止信标扫描,它应该在导航回第一个屏幕时重新开始扫描。

我没有使用任何供应商的SDK。我只使用苹果核心位置框架。

我已经使用[self.locationManager stopUpdatingLocation]来停止并且[self.locationManager startUpdatingLocation]重新启动但两者都不起作用。请建议如何实现这一目标。

其他信息: 设备:-ipad,ios8.4

2 个答案:

答案 0 :(得分:2)

当您使用CoreLocation说“扫描信标”时,人们通常会指的是Beacon Ranging API。为此,您启动和停止的方式是拨打电话:

[locationManager startRangingBeaconsInRegion: region]; // start

[locationManager stopRangingBeaconsInRegion: region]; // stop

如果您希望在ViewController中显示和消失时执行此操作,则可以将调用放在viewWillAppearviewWillDisappear回调中。像这样:

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  [locationManager stopRangingBeaconsInRegion: region];
}

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [locationManager startRangingBeaconsInRegion: region];
  }
}

请注意,要使上述代码生效,您必须为regionlocationManager设置类变量。

答案 1 :(得分:1)

您可以使用以下方式停止监控区域:

Swift
func stopMonitoringForRegion(_ region: CLRegion!)
OBJECTIVE-C
- (void)stopMonitoringForRegion:(CLRegion *)region:

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/instm/CLLocationManager/stopMonitoringForRegion