10

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

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

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

我究竟做错了什么?

4

2 回答 2

2

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

如果以下任何一项适用,则此属性的值为 nil:

设备处于飞行模式。设备中没有 SIM 卡。该设备不在蜂窝服务范围内。

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

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

于 2012-01-06T12:55:04.667 回答
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;

您可以为此制作网络服务以指定该参数所属的网络的运营商名称。这些参数可以从这个wikipedia中唯一标识。

例如,我的国家代码是“410”,我的运营商网络是“06”,它可以正确识别我的运营商名称。

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

于 2014-05-17T11:20:02.393 回答