Обнаружение GPS в устройстве iOS с CoreTelephony
Я искал способ определить, есть ли на устройстве iOS модуль GPS или нет, и я столкнулся с этим вопросом. Я нашел последний ответ очень интересным:
CTTelephonyNetworkInfo* netInfo = [[CTTelephonyNetworkInfo alloc] init];
if(netInfo) {
CTCarrier* carrier = [netInfo subscriberCellularProvider];
if([[carrier carrierName] length] <=0) {
//NO operator=>NO 3G and no real GPS
}
}
Я искал какое-то подтверждение в качестве обоснованности этой техники / является ли она полностью точной. У меня нет достаточно устройств, чтобы проверить это сам.
1 ответ
После некоторого копания я нашел эту статью от Apple, которая в качестве сноски объясняет, что:
Устройства iOS без сотовой связи используют только Wi-Fi для служб определения местоположения (если доступна сеть Wi-Fi).
GPS доступен [только] на моделях iPhone и iPad Wi-Fi + 3G.
Таким образом, кажется, что обнаружение сотовой связи является надежным способом определить, есть ли на устройстве iOS устройство GPS. Нет сотовой связи, нет GPS.
Обратите внимание, что iOS поддерживает внешние устройства GPS через Bluetooth и разъем док-станции. Вышеуказанные методы покажут, имеет ли устройство встроенный GPS, но не сможет ли LocationManager предоставлять обновления местоположения, управляемые GPS.