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

10

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

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

它返回 "Carrier"。如果我去iPhone设置中查看,我的运营商名称是正确的。我的手机上的iOS版本是v4.2.1。

我做错了什么?


我也遇到了同样的问题..你解决了吗?@DixieFlatline - user2299177
这个苹果审核是否安全? - Ali Riahipour
2个回答

2
你真的能获取到字符串“Carrier”,还是该字符串为空?文档中说:
“如果以下任何情况适用,则此属性的值为 nil: - 设备处于飞行模式。 - 设备中没有 SIM 卡。 - 设备在蜂窝服务范围之外。”
我猜在模拟器中它也是空的。
无论如何,你应该检查 mobileNetworkCode,因为运营商的名称很少正确(至少在欧洲,运营商经常更改他们的名称)。

1
通过这个,您可以获取移动网络代码、移动国家代码。从这些值中,您可以指定这是哪个 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”,它正确地识别了我的运营商名称。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接