如何停止信标监控
Posted
技术标签:
【中文标题】如何停止信标监控【英文标题】:How to stop beacon monitoring 【发布时间】:2015-09-03 15:08:35 【问题描述】:我开发了一个 ios 应用程序,它有两个屏幕,该应用程序在第一个屏幕上扫描信标(正常工作)。但是当我导航到第二个屏幕时,它仍然会扫描信标。我的要求是在第二个屏幕中停止信标扫描,并在导航回第一个屏幕时重新开始扫描。
我没有使用任何供应商的 SDK。我只使用苹果核心定位框架。
我已使用 [self.locationManager stopUpdatingLocation] 停止并使用 [self.locationManager startUpdatingLocation] 重新启动,但两者都不起作用。请建议如何实现。
附加信息: 设备:-ipad,ios8.4
【问题讨论】:
【参考方案1】:当您使用 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
设置类变量。
【讨论】:
【参考方案2】:您可以使用以下命令停止对区域的监控:
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:
【讨论】:
谢谢。编辑了更多信息。以上是关于如何停止信标监控的主要内容,如果未能解决你的问题,请参考以下文章