我尝试使用此代码获取运营商名称(使用CoreTelephony):
CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netinfo subscriberCellularProvider];
NSLog(@"Carrier Name: %@", [carrier carrierName]);
它返回“Carrier”。如果我去iPhone设置我的运营商名称是正确的。我手机上的iOS是v4.2.1。
我做错了什么?
答案 0 :(得分:2)
你真的得到字符串“Carrier”或字符串为空吗?文档说:
如果符合以下任何条件,则此属性的值为nil:
设备处于飞行模式。设备中没有SIM卡。 该设备不在移动电话服务范围内。
在模拟器中打赌也是空的。
无论如何,您应该检查 mobileNetworkCode ,因为名称很少是正确的(至少在欧洲,运营商经常来往地更改其名称)。
答案 1 :(得分:0)
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”,它正确识别我的运营商名称。
我也遇到了同样的问题,现在已经解决了