【问题标题】:Unable to simulate location on Xcode Version 9.0.1 (9A1004)无法在 Xcode 版本 9.0.1 (9A1004) 上模拟位置
【发布时间】:2017-10-27 07:14:53
【问题描述】:

我正在处理一个经常需要更改用户位置的项目,当然我从项目一开始就包含了所有必要的数据来模拟位置。今天 Xcode 不假装是自定义位置,我决定尝试模拟一个标准位置(例如旧金山),但是当我在真实设备上启动应用程序时,我的真实位置会显示在真实设备上。我尝试在模拟器上运行该应用程序,但得到了相同的结果。我做了一个干净的项目,重新启动了真实设备(iPhone 7),重新启动了 Xcode,但它没有给出结果。我阅读了一些主题,但它们都与开发人员没有在方案中包含位置模拟的事实有关。我该如何解决这个问题?谢谢。

更新:我已经更新了 Xcode,现在我使用的是 9.1 版 (9B55),但这并没有修复这个错误。有时(大约每周一次),Xcode 甚至拒绝模拟列表中的标准位置(例如旧金山)。尽管控制台上方的菜单显示该位置是模拟的。

Info.plist 包含

<key>NSLocationWhenInUseUsageDescription</key>
    <string>Turn On Location Services to allow App to show you Events near you.</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>Turn On Location Services to allow App to show you Events near you.</string>
    <key>NSLocationUsageDescription</key>
    <string>Turn On Location Services to allow App to show you Events near you.</string>
    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>Turn On Location Services to allow App to show you Events near you.</string>

更新 1:Xcode 不能仅在真实设备(iPhone 7)上模拟位置,两周前没有这样的问题。当我调用 CLLocationManager 显示警报时,实际设备上的此警报根本不显示。我再说一遍,这个问题并不总是重复,这可能每周发生一次,但没有任何方法可以帮助将这种可能性恢复到工作状态。

【问题讨论】:

    标签: ios swift xcode xcode9


    【解决方案1】:

    我遇到了同样的问题,这是我的解决方法。

    当您在请求位置时没有看到状态栏上的箭头时,您就知道定位服务不工作。因此,只需关闭并重新打开定位服务。我想这是一个错误。

    1. 转到电话设置 > 定位服务...,然后将其关闭再打开。
    2. Xcode > 调试 > 位置模拟
    3. 模拟器 > 调试 > 位置 > 自定义位置(这将采用您在第 2 步中设置的内容。)

    当您请求位置时,您应该会在状态栏上看到箭头。如果没有...请重试这些步骤。

    【讨论】:

      【解决方案2】:

      首先...警告! ,读这个(来自苹果):

      您需要在应用的 Info.plist 文件中包含 NSLocationWhenInUseUsageDescriptionNSLocationAlwaysAndWhenInUsageDescription 键。 (如果您的应用支持 iOS 10 及更早版本,则还需要 NSLocationAlwaysUsageDescription 键。)如果这些键不存在,授权请求将立即失败。

      无论如何,我只是建议做一个简单的测试。

      • 确保在Run Scheme上为您的目标上的Debug Build Configuration设置了Allow Location Simulation-
      • 运行您的应用程序,切换到模拟器上的地图应用程序(这是您第一次使用,请确保您接受允许位置对话框)。 -
      • 在 Xcode 上的位置图标上更改位置(见下文),并检查地图是否移动到该位置-

      • 如果一切正常,地图应用必须显示所选位置

      如果您的应用无法遵循相同的行为,则可能是您遗漏了一些东西。延伸阅读:

      About Location Services and Maps

      CoreLocation Framework Reference

      干杯。

      【讨论】:

      • info.plist 中所有必要的键,我指出,我已经在这种模式下工作了 6 个多月,直到今天 Xcode 无法模拟位置。
      • Xcode 有一个错误,即通过 gpx 文件添加时无法模拟您的自定义位置。我为此提交了一个错误。它已在最新的测试版中修复。
      猜你喜欢
      • 2018-08-26
      • 1970-01-01
      • 2017-02-18
      • 2014-07-16
      • 2018-04-04
      • 2014-11-08
      • 1970-01-01
      • 2018-09-05
      • 2018-04-09
      相关资源
      最近更新 更多