【问题标题】:Disable location service in iPhone simulator?在 iPhone 模拟器中禁用定位服务?
【发布时间】:2011-01-20 22:40:54
【问题描述】:

我想测试如果我的应用无法获取位置坐标会发生什么。是否可以在模拟器中禁用定位服务,例如在关闭 WiFi 的 iPod Touch 上?

我还没有我的 iPhone 开发者计划证书,所以我无法在我的设备上测试它。

提前致谢!

【问题讨论】:

    标签: iphone ios-simulator core-location


    【解决方案1】:

    您可以在模拟器中禁用定位服务;

    1. 通过 xcode 运行您的应用,以便打开模拟器
    2. 通过 xcode 停止应用程序(这应该让模拟器保持打开状态)
    3. 在模拟器窗口中打开“设置”应用
    4. 隐私 > 定位服务。停用定位服务
    5. 再次运行您的应用,定位服务应该被禁用

    希望对你有帮助!

    【讨论】:

    • +1,尽管当用户最初发布问题时,这不是一个可用的选项。
    • 位置的隐私设置不会禁用 GPS,它只会禁用任何应用程序对服务的访问。如果有任何应用程序尝试使用 GPS 位置,iOS13 会给您一条消息。
    【解决方案2】:

    **忽略这​​个。这适用于 MapKit。检查下面的 cmets。

    断开计算机与互联网连接。 How to.

    编辑:你可以测试来自this site的代码,可以下载here

    打开 AirPort,您将获得地图。关闭 AirPort 后,您会看到一个空白的正方形视图。

    【讨论】:

    • 很抱歉,如果您断开互联网连接,它也会在模拟器中显示“1 Infinite Loop, Cupertino, USA”位置
    • 使用核心定位框架时,调用[locationManager startUpdatingLocation];即使关闭机场,该方法也会给出“1 Infinite Loop, Cupertino, USA”的位置
    • MKMapView 在没有网络连接的情况下自然无法工作,但是 CLLocationManager 就不一样了。在模拟器上,它总是会返回库比蒂诺的相同位置
    【解决方案3】:

    作为一种解决方法,您可以尝试通过构造具有适当值的 NSError 对象并手动调用相应的 CLLocationManager 委托 didFailWithError: 方法来模拟更新位置失败。

    【讨论】:

      【解决方案4】:

      据我所知,您无法禁用模拟器上的定位服务。

      我在使用定位服务时通常使用的方法是围绕 NSLocation 构建一个简单的包装类,以满足我的应用程序的需求。

      在这个包装器中,您可以轻松地假装该服务在模拟器中不工作。例如,它可能有一个“isEnabled”方法,该方法在模拟器上返回 false,编译器定义如 (#if TARGET_ IPHONE_SIMULATOR)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-06
        • 2011-01-04
        • 2010-09-17
        • 1970-01-01
        • 2013-10-11
        相关资源
        最近更新 更多