I was looking for a way to detect whether an iOS device has a GPS unit or not, and I ran into this question. I found the last answer very interesting:
CTTelephonyNetworkInfo* netInfo = [[CTTelephonyNetworkInfo alloc] init];
if(netInfo) {
CTCarrier* carrier = [netInfo subscriberCellularProvider];
if([[carrier carrierName] length] <=0) {
//NO operator=>NO 3G and no real GPS
}
}
I was looking for some confirmation as the the validity of this technique/whether or not it is entirely accurate. I don't have enough devices to test it myself.