我在这个主题中使用答案。与getting operator details in iphone相同的iPhone - how to determine carrier of the device (AT&T, Verizon, etc?)。虽然在使用SIM卡时工作正常,但如果没有SIM卡,则返回的运营商名称是旧运营商名称。它不会检测到SIM卡是否被移除。
我知道这与苹果的文档相矛盾,如果没有运营商,CTCarrier对象应该为零。但在我的应用程序中,我记录了运营商信息,它给了我最新的运营商名称,尽管没有安装sim。
发布于 2012-05-08 04:59:53
根据[CTCarrier carrierName]
的documentation
如果您为运营商配置了设备,然后移除了SIM卡,此属性将保留运营商的名称。
据我所知,您无法检测是否安装了SIM卡。您只能使用Reachability
确定无线广域网连接是否可用。
发布于 2015-01-13 20:52:15
@import CoreTelephony;
-(BOOL)hasCellularCoverage
{
CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new];
CTCarrier *carrier = [networkInfo subscriberCellularProvider];
if (!carrier.isoCountryCode) {
NSLog(@"No sim present Or No cellular coverage or phone is on airplane mode.");
return NO;
}
return YES;
}
发布于 2013-12-16 21:15:13
CTCarrier对象有5个属性:
allowsVOIP
carrierName
isoCountryCode
mobileCountryCode
mobileNetworkCode
我做了一些关于CTCarrier的测试,我得出的结论是,对于iOS 7,当SIM卡被移除时,只有carrierName和allowsVOIP被保留。isoCountryCode、mobileCountryCode和mobileNetworkCode都为iOS 7进行了重置。这就是你检测SIM卡是否存在的方法。
对于iOS 6,所有值都将保留。
我使用的是运行iOS 7的iPhone 4S和iPhone 5进行测试。
https://stackoverflow.com/questions/10488898
复制相似问题