iOS7到IOS8中当前位置纬度和经度的不同行为

KkM*_*MIW 2 gps locationmanager ios xamarin ios7

使用xamarin作为当前位置currentLocation示例 我使用上面的Link获取当前位置的纬度和经度.
在升级到IOS 8之前的IOS 7中它在模拟器和设备上显示我当前位置的纬度和经度.(在模拟器中看起来很奇怪,获取当前位置的纬度和经度).

升级到iOS 8并运行相同的代码后,它会给出

在模拟器中:(开启wifi无SIM卡位置服务应用程序总是.)

Result:
latitude = 37.785834.
longitude = -122.406517.
Run Code Online (Sandbox Code Playgroud)

在设备IPhone5c上(始终打开wifi无SIM卡位置服务应用程序.)

Result:
latitude = 37.785834.
longitude = -122.406517.
Run Code Online (Sandbox Code Playgroud)

(但我预计我目前的位置纬度和经度)

升级后它没有问,该应用程序就像使用你的当前位置GPS.带有YES,NO选项的警报消息.

如何获取我当前的位置纬度和经度?

小智 6

您需要从iOS 8.0开始明确请求权限.这样做的步骤:

  1. 更新Info.plist文件.插入新密钥:NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription密钥,并编写将在您的应用请求权限时显示的自定义消息.

必须在plist文件中包含这些键中的任何一个,否则将不会显示权限请求!如果您不想在alertview中显示自定义说明文本,请将键的值字符串留空,但仍必须在Info.plist文件中显示该键!

  1. 在开始跟踪之前,请检查您是否在iOS8上,然后从CLLocationManager实例发送RequestAlwaysAuthorization或RequestWhenInUseAuthorization.例:

    var locationManager = new CLLocationManager();
    if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
        locationManager.RequestAlwaysAuthorization();
    }
    
    Run Code Online (Sandbox Code Playgroud)

在这种情况下,请使用Info.plist文件中的NSLocationAlwaysUsageDescription键.请注意,Xamarin Studio目前不会从下拉列表中自动为您提供此密钥,您必须在此处手动输入/复制粘贴此密钥.