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

发布于 2024-11-08 12:46:46 字数 334 浏览 3 评论 0原文

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

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

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

我做错了什么?

I tried getting carrier name with this code (using CoreTelephony):

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

It returns "Carrier". If i go to iPhone settings my carrier's name is correct there. My iOS on the phone is v4.2.1.

What am i doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼趣 2024-11-15 12:46:46

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

如果满足以下任一条件,则此属性的值为 nil:

设备处于飞行模式。设备中没有 SIM 卡。
该设备位于蜂窝服务范围之外。

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

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

Do you really get string "Carrier" or is the string empty? Documentation says:

The value for this property is nil if any of the following apply:

The device is in Airplane mode. There is no SIM card in the device.
The device is outside of cellular service range.

Bet it's empty also in simulator.

Anyway, you should be checking mobileNetworkCode, since names are rarely correct (at least in Europe, where operators come and go changing their names quite often).

夜还是长夜 2024-11-15 12:46:46

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

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

by this, you can get mobile Network code, mobile country code . from these values
you can specify which sim name is this.

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;

and you can make web service for this to specify which carrier name of the network, this parameter belongs to.
these parameters can be uniquely identified from this wikipedia.

for example, my country code is "410", my carrier network is "06" and it correctly identifies my carrier name.

I was also stuck at the same issue and now solved

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文