【问题标题】:How to stop using the Location Services within my iOS app?如何停止在我的 iOS 应用程序中使用定位服务?
【发布时间】:2014-06-24 22:02:30
【问题描述】:

我有一个 iOS 应用程序,它使用 CLLocationManager 来监控区域并获取 GPS 更新。大多数时候,我希望我的应用程序在手机进入后台甚至被杀时继续跟踪手机,并且效果很好(在我的应用程序被杀后,我仍然可以在状态栏中看到小箭头)。问题是我的应用被定位服务重新启动后,我无法停止监视区域和 GPS 更新。

当我的应用被定位服务重新启动时,我实例化 CLLocationManager,然后调用其方法 stopRangingBeaconsInRegionstopUpdatingLocation,然后将其委托设置为 nil,并将其自身设置为 nil

感谢 NSLogger,我可以看到我的回调不再被调用,但状态栏中的小箭头仍然存在(我的应用程序是唯一允许使用设置菜单中的定位服务的应用程序)。

我错过了什么?有没有办法知道我的应用中仍然使用位置服务的内容?

【问题讨论】:

    标签: ios service cllocationmanager ibeacon


    【解决方案1】:

    当您调用 stopRangingBeaconsInRegion 时,您从哪里获得区域列表?正确的做法如下:

    for (CLRegion *monitored in [self.locationManager monitoredRegions]) {
        NSLog(@"Stopping monitoring on: %@", monitored.identifier);
        [self.monitoringLocationManager stopMonitoringForRegion:monitored];
    }
    
    for (CLBeaconRegion *region in [self.locationManager rangedRegions]) {
        NSLog(@"Stopping ranging on: %@ ", region.identifier);
        [self.rangingLocationManager stopRangingBeaconsInRegion:region];
    }
    

    【讨论】:

    • 有趣。我不知道有 2 个区域集合。我没有看到在我的代码中调用了 startRangingBeaconsInRegion。我也会打电话给 stopRanginBeaconsInRegion。测距信标能否阻止我的应用在被杀死时停止使用定位服务?
    • 在后台通常不允许测距,所以如果这让位置图标保持打开状态,我会感到惊讶。如果是这样,那将是一个 iOS 错误,我相信。
    【解决方案2】:

    我终于发现我错过了删除我众多区域中的一些。避免此错误的简单方法是检索使用属性monitoredRegions 监控的区域列表,并为每个区域调用stopRangingBeaconsInRegion。我也忘了打电话给stopMonitoringSignificantLocationChanges(我不知道我的应用正在使用它,因为我正在修改一个前同事的应用)。

    【讨论】:

    • 是的,这正是我要建议的!在我点击提交之前你就想通了!
    【解决方案3】:

    您怎么知道是您的应用在使用位置服务? 如果 iOS 本身在后台使用定位服务,则会出现小箭头。

    如果您在将委托设置为 nil 之前确实调用了 stopRangingBeaconsInRegion 和 stopUpdatingLocation 并且您没有收到任何回调,那么您的应用程序没有使用定位服务。

    【讨论】:

    • 我解释了为什么我知道是我的应用在使用定位服务,但你没有完全阅读我的帖子。
    • 我读到“......我的应用程序是我唯一允许使用设置菜单中的定位服务的应用程序”但是有某些后台服务是您无法控制的,除非您关闭整个位置服务开关。
    • 真的吗?当定位服务未在设置中列出时,有没有办法知道哪些后台服务正在使用它们?
    • @RaphaelRoyer-Rivard 我不确定如何找到它。我认为苹果不会让他们向开发人员公开。您是否尝试过在模拟器中测试您的应用程序?看看你有没有那个箭头。
    猜你喜欢
    • 2016-08-16
    • 2011-09-05
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 2014-03-04
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多