使用CoreTelephony获取运营商名称只会返回“运营商”

时间:2011-05-19 08:28:32

标签: iphone core-telephony carrier

我尝试使用此代码获取运营商名称(使用CoreTelephony):

CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netinfo subscriberCellularProvider];
NSLog(@"Carrier Name: %@", [carrier carrierName]);

它返回“Carrier”。如果我去iPhone设置我的运营商名称是正确的。我手机上的iOS是v4.2.1。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

你真的得到字符串“Carrier”或字符串为空吗?文档说:

  

如果符合以下任何条件,则此属性的值为nil:

     

设备处于飞行模式。设备中没有SIM卡。   该设备不在移动电话服务范围内。

在模拟器中打赌也是空的。

无论如何,您应该检查 mobileNetworkCode ,因为名称很少是正确的(至少在欧洲,运营商经常来往地更改其名称)。

答案 1 :(得分:0)

通过此,您可以获得移动网络代码,移动国家/地区代码。从这些价值观 你可以指定哪个sim名称。

CTTelephonyNetworkInfo* info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier* carrier = info.subscriberCellularProvider;
NSString *mobileCountryCode = carrier.mobileCountryCode;
NSString *carrierName = carrier.carrierName;
NSString *isoCountryCode = carrier.isoCountryCode;
NSString *mobileNetworkCode = carrier.mobileNetworkCode;

您可以为此创建Web服务,以指定该参数所属的网络运营商名称。 这些参数可以通过此wikipedia唯一标识。

例如,我的国家/地区代码为“410”,我的运营商网络为“06”,它正确识别我的运营商名称。

我也遇到了同样的问题,现在已经解决了