ios - 检测 GPS 是否可用 iPad(内部蜂窝或外部蓝牙)

标签 ios ipad gps core-location

是否有可能实际确定 iPAD 是否真的有 GPS 信号。我能想到三种情况

  • 仅限 Wifi 的 IPAD
  • 带有外部 GPS(例如 DualXGPS)的 Wifi-Only IPAD
  • 带内置 GPS 的蜂窝 IPAD

  • 苹果文档提到:

    Some location services require the presence of specific hardware on the given device. For example, heading information is available only for devices that contain a hardware compass. This class defines several methods that you can use to determine which services are currently available.



    是否有专门用于 GPS 的特定调用,例如航向或跟踪?我假设也许只有 GPS 设备有航向调用,因为文档说:

    In iOS, a device with the appropriate hardware may also report heading information. When the value in the headingAvailable property is YES, you can use a location manager object to retrieve heading information.



    以前的一些帖子建议尝试锁定非常准确的 GPS 更新
  • Detect if Device has GPS
  • How can I tell if an iOS device has a GPS?

  • 但我希望这些方法更具体一点,这些方法“感觉”很虚幻——因为当设备实际上有能力时,仅仅因为不准确的 GPS 信号可能看起来没有 GPS。另外我认为可以“模仿gps”的wifi设备也可能通过这些条件之一。

    谢谢你的帮助!

    最佳答案

    最简单的答案是你应该尝试以你需要的精度使用 GPS,看看你是否得到它。并处理您可能无法获得此准确性的事实,因为用户在建筑物中,或城市峡谷中,或没有 GPS 硬件,或已关闭位置服务(尽管可以检测到)。

    如果您获得优于 100m 的精度或 CLLocation有高度你几乎肯定有 GPS 硬件(但你必须等待相当长的时间才能获得至少 4 颗卫星上的信号锁定才能获得高度)。如果您有蜂窝 radio 连接(请参阅可达性),那么您就有 GPS 硬件(iPhone1 除外)。如果您有数字罗盘功能,那么您就有 GPS 硬件(iPhone 3G 除外)。

    内置 GPS 硬件可用于所有具有蜂窝 radio 的 iPhone 和 iPad(iPhone 1 除外,请参阅 wiki chart)。如果您研究该图表,则似乎所有具有 GPS 硬件的设备(到目前为止)也具有数字罗盘(磁力计),但 iPhone 3G 除外。

    使用 course (如建议的 here )来自 CLLocation仅当设备移动速度足够快且 GPS 具有卫星锁定功能时才有效。更好的选择是检测您是否有 heading从指南针(磁力计)。

    您可以使用硬件字符串来确定设备功能,方法是对哪些硬件具有哪些功能的表进行硬编码(描述为 here)。当引入新设备时,这必须保持更新(这意味着应用程序更新)。 Erica Sadun 的类别为 UIDevice调用CapabilitiesHardware on github尝试这样做,但可能无法在应用商店中使用。

    这些都对外部插入式 GPS 或外部蓝牙 GPS 设备没有帮助。

    关于ios - 检测 GPS 是否可用 iPad(内部蜂窝或外部蓝牙),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21879756/

    相关文章:

    ipad - 嵌入式 HTML 5 视频存储在缓存中但不显示在 iPad 2 上

    iphone - 由于 iphone 自动锁定导致应用程序崩溃?

    html - Mailchimp 嵌入表格 : too many recent signup requests on iOS 10 devices

    android - 如何在Android中使用Internet获取MyLocation?

    android - 接收广播 Intent 时出错 { act=android.location.PROVIDERS_CHANGED flg=0x10 }

    ios - 如何区分 UIScrollView 中的平移和滚动

    ios - 如何从警报 View 中获取值

    android - GPSTracker 无法在 android studio 中解析

    objective-c - 如何在代码中的 UIToolBar 中添加 UIBarButtonItem

    ios - 是否可以从 UIView XIB 执行 Segue?