【问题标题】:Does CLLocationManager#startMonitoringSignificantLocationChanges prompt for user access in an iPod Touch?CLLocationManager#startMonitoringSignificantLocationChanges 是否提示用户在 iPod Touch 中访问?
【发布时间】:2013-05-28 08:29:19
【问题描述】:

由于 iPod touch 没有 GPS,它在呼叫CLLocationManager startMonitoringSignificantLocationChanges 时是否真的提示位置访问?

【问题讨论】:

    标签: ios objective-c cllocationmanager ipod-touch


    【解决方案1】:

    显着的位置变化仅适用于配备蜂窝网络芯片的设备(iPhone、配备蜂窝网络的 iPad)。它使用手机信号塔来检查是否有重大移动。

    如果您尝试在 iPod Touch 上使用 startMonitoringSignificantLocationChanges,它只会默默地失败。它永远不会要求用户允许位置服务。它甚至不会调用locationManager:didFailWithError: 方法。

    最好的办法是使用+significantLocationChangeMonitoringAvailable 将您的电话包裹在支票中

    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    if ([CLLocationManager significantLocationChangeMonitoringAvailable]) {
        [locationManager startMonitoringSignificantLocationChanges];
    } else {
        NSLog(@"Can't monitor significant location changes");
    }
    

    【讨论】:

    • 谢谢内文!有趣的是,文档如何阅读“[..] 为想要跟踪用户大致位置 [..] 的应用程序提供了巨大的节能效果 [..]”,这会立即假定它主要是非 GPS 设备。
    • 是的,文档不是那么清楚。但我认为这主要是非GPS。当手机检测到手机信号塔发生变化时,它会触发它。这不使用 GPS,只使用无论如何都在运行的蜂窝芯片。我不确定它是否会在此时唤醒 GPS 以获得良好的修复。
    【解决方案2】:

    是的。

    iPod touch 可以通过对 Wifi 热点进行三角测量来获取其位置 - 它仍然是用户的位置,因此仍会询问用户是否真的希望 Bob's Money Stealer 找到他们的位置。

    【讨论】:

    • 您的回答是否完全基于这个事实?因为根据我的经验,在干净的第 4 代 iPhone 上,不会提示用户允许她的位置。将其更改为 startUpdatingLocation,它按预期工作。
    • @qnoid 我不确定你的评论是什么。然而,值得注意的是,iPod touch 不允许使用地理围栏——如果你使用这些,你将不会收到警报。没有功能,没有警报。
    • 根本没有地理围栏。一个 CLLocationManager,分配了一个仅在 startUpdatingLocation 上提示用户位置的委托。只在 iOS 6.1.3 上测试过。
    • @qnoid 检查您的设置以确保该应用之前没有被授予权限。
    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 2010-10-11
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多