我正在开展一个项目,通常需要更改用户的位置,当然我包含了从项目一开始就模拟位置的所有必要数据。今天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来显示警报时,实际设备上的此警报根本不会显示。我再说一遍,这个问题并不总是重复,这可能每周发生一次,但没有任何方法可以帮助将这种可能性恢复到工作状态。
答案 0 :(得分:3)
我遇到了同样的问题,这是我的解决方法。
当您请求位置时,如果您没有在状态栏上看到箭头,您就会知道位置服务无法正常工作。因此,只需重新打开定位服务即可。我想这是一个错误。
请求位置时,应该在状态栏上看到箭头。如果没有,请重试步骤。
答案 1 :(得分:1)
首先......警告! ,读这个(来自苹果):
您需要在应用的Info.plist文件中包含 NSLocationWhenInUseUsageDescription 和 NSLocationAlwaysAndWhenInUsageDescription 键。 (如果您的应用支持iOS 10及更早版本,则还需要 NSLocationAlwaysUsageDescription 键。)如果这些密钥不存在,授权请求会立即失败。
无论如何,我建议做一个简单的测试。
如果您的应用无法遵循相同的行为,可能您错过了某些内容。进一步阅读:
About Location Services and Maps
CoreLocation Framework Reference
干杯。