我开发了一个ios应用程序,它有两个屏幕,应用程序在第一个屏幕上扫描信标(正常工作)。但是当我导航到第二个屏幕时,它仍然会扫描信标。我的要求是在第二个屏幕上停止信标扫描,它应该在导航回第一个屏幕时重新开始扫描。
我没有使用任何供应商的SDK。我只使用苹果核心位置框架。
我已经使用[self.locationManager stopUpdatingLocation]来停止并且[self.locationManager startUpdatingLocation]重新启动但两者都不起作用。请建议如何实现这一目标。
其他信息: 设备:-ipad,ios8.4
答案 0 :(得分:2)
当您使用CoreLocation说“扫描信标”时,人们通常会指的是Beacon Ranging API。为此,您启动和停止的方式是拨打电话:
[locationManager startRangingBeaconsInRegion: region]; // start
[locationManager stopRangingBeaconsInRegion: region]; // stop
如果您希望在ViewController中显示和消失时执行此操作,则可以将调用放在viewWillAppear
和viewWillDisappear
回调中。像这样:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[locationManager stopRangingBeaconsInRegion: region];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[locationManager startRangingBeaconsInRegion: region];
}
}
请注意,要使上述代码生效,您必须为region
和locationManager
设置类变量。
答案 1 :(得分:1)
您可以使用以下方式停止监控区域:
Swift
func stopMonitoringForRegion(_ region: CLRegion!)
OBJECTIVE-C
- (void)stopMonitoringForRegion:(CLRegion *)region: