无法在Xcode版本9.0.1(9A1004)上模拟位置

时间:2017-10-27 07:14:54

标签: ios swift xcode xcode9

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

enter image description here

更新:我已经更新了Xcode,现在我使用的是版本9.1(9B55),但这并没有解决这个问题。有时(大约每周一次),Xcode拒绝模拟列表中的标准位置(例如旧金山)。虽然控制台上方的菜单显示位置模拟。 enter image description here

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来显示警报时,实际设备上的此警报根本不会显示。我再说一遍,这个问题并不总是重复,这可能每周发生一次,但没有任何方法可以帮助将这种可能性恢复到工作状态。

2 个答案:

答案 0 :(得分:3)

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

当您请求位置时,如果您没有在状态栏上看到箭头,您就会知道位置服务无法正常工作。因此,只需重新打开定位服务即可。我想这是一个错误。

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

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

enter image description here

enter image description here

enter image description here

答案 1 :(得分:1)

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

  

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

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

  • 确保在目标上的调试版本配置的运行方案上设置允许位置模拟 -
  • 运行您的应用程序,切换到模拟器上的Map应用程序(这是您使用的第一个时间,请确保您接受允许位置对话框)。 -
  • 更改Xcode上位置图标的位置(见下文),并检查地图是否移动到该位置 -

Xcode 9

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

enter image description here

如果您的应用无法遵循相同的行为,可能您错过了某些内容。进一步阅读:

About Location Services and Maps

CoreLocation Framework Reference

干杯。