ios - 当前位置纬度和经度在 iOS 7 到 IOS 8 中的不同行为

标签 ios ios7 gps xamarin locationmanager

对当前位置使用 xamarin currentLocation example 我使用上面的链接获取当前位置的纬度和经度。
在升级到 IOS 8 之前的 IOS 7 中,它在模拟器和设备上都显示了我当前的位置纬度和经度。(在模拟器中获取当前位置的经度和纬度对我来说看起来很奇怪)。

升级到 iOS 8 后运行相同的代码

在模拟器中:(始终打开 wifi 无 sim 卡位置服务应用程序。)

Result:
latitude = 37.785834.
longitude = -122.406517.

在设备 iPhone5c 上(始终打开 wifi 无 sim 卡位置服务应用程序。)

Result:
latitude = 37.785834.
longitude = -122.406517.

(但我期望我当前位置的经纬度)

升级后它不会询问,该应用程序喜欢使用您的当前位置 GPS。带有 YES、NO 选项的警告消息。

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

最佳答案

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

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

您的 plist 文件中必须有这些键中的任何一个,否则将不会显示权限请求!如果您不想在警报 View 中显示自定义解释文本,请将键的值字符串留空,但您仍然必须在 Info.plist 文件中存在该键!

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

    var locationManager = new CLLocationManager();
    if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
        locationManager.RequestAlwaysAuthorization();
    }
    

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

关于ios - 当前位置纬度和经度在 iOS 7 到 IOS 8 中的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953661/

相关文章:

ios - 通过 WiFi 配对 iOS 和 Mac 应用程序的框架

ios7 - Nimbus 框架,使用 CocoaPods,带有 Xcode 5 和 iOS 7 SDK

cordova - 如何在 Ionic Framework 或 Cordova 中以编程方式启用和禁用 GPS

iphone - iOS 7 中的 RemoteControlReceivedWithEvent 问题

gps - DJI Phantom 3 Advance使用什么地理引用系统和基准

postgresql - Postgis 经度、纬度转几何 postgresql

ios - 使用 codegen 的核心数据实体导致 "initializer required ' init(entity :insertInto: )' " error

html - 如何添加请求网页的 UITextfield

iphone - 我应该使用哪种文件格式将数组保存到文件中?

uiviewcontroller - 如何调整UIViewControllerWrapperView的方向(在IOS7中)?