【问题标题】:IOS 8 Location Services Not WorkingIOS 8 定位服务不工作
【发布时间】:2014-11-22 13:51:29
【问题描述】:

总结: 以前运行的应用程序无法运行 geode 代码和反向 geode 代码。反向测地代码失败,因为测地代码无法提供位置。然后,我浏览了 Apple 自己的 LocateMe 示例代码,并在隐私下启用了定位服务。我还将位置服务下的“允许位置访问”启用为始终,但在运行 Apple 的 LocateMe 或我自己的应用程序后,此设置自行变回无。

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

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

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

实际结果: 见上文。

版本: IOS 8.0.0 和 8.0.2

注意事项:

配置: iPhone 5 和 iPhone 6 Plus

添加这个也无济于事: [self.locationManager requestAlwaysAuthorization];

【问题讨论】:

标签: ios8 core-location


【解决方案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 询问用户是否授予对您的应用程序位置的访问权限时,Alert 中显示的字符串。 为了向后兼容,您可能还需要添加密钥 NSLocationUsageDescription

【讨论】:

    猜你喜欢
    • 2012-09-13
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    相关资源
    最近更新 更多