IOS 8位置服务不起作用

时间:2014-09-27 19:34:47

标签: ios8 core-location

要点: 以前运行的应用程序无法运行geode代码和反向geode代码。反向geode代码失败,因为geode代码无法提供位置。然后我讨论了Apple自己的LocateMe示例代码,并启用了Privacy下的位置服务。我还将位置服务下的“允许位置访问”设置为“始终”,但在运行Apple的LocateMe或我自己的应用程序后,此设置会自动更改为空。

重现步骤: 似乎位置服务SDK获取位置已被破坏。之前在iPhone 5上运行的软件在升级到IOS 8后停止工作。 步骤1.加载示例LocateMe Apple的示例Core Location示例项目; 步骤2.在系统设置下启用位置服务,并将应用程序的“允许位置服务”更改为始终。

Get-Location失败,“always”设置被删除。

预期结果: 获取位置和位置更新。

实际结果: 见上文。

版本: IOS 8.0.0和8.0.2

注意:

配置: iPhone 5和iPhone 6 Plus

添加此项也无济于事: [self.locationManager requestAlwaysAuthorization];

1 个答案:

答案 0 :(得分:1)

使用

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) \
    ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)



        if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8")) {
            CLLocationManager *manager = [[LocationManager sharedInstance] clLocationManager];
            [manager requestWhenInUseAuthorization];
            [manager startUpdatingLocation]; // or what ever location function you need.
        } else {
            // The usual way for iOS <= 7
            // (Do what you did before) 
        }

除了上述内容之外,您还必须在info.plist文件中为密钥NSLocationWhenInUseUsageDescription添加字符串值。当iOS询问用户是否授予对应用程序位置的访问权限时,该值是Altert中显示的字符串。 为了向后兼容,您可能还想添加密钥NSLocationUsageDescription