CTCarrier的移动网络代码在漫游时会改变吗?

11

文档说明CTCarrier的carrierName属性:“如果用户正在漫游,该值不会更改;它始终表示用户拥有帐户的提供商。”

然而,关于mobileNetworkCode属性并未作出相同的说明。它是否会根据当前运营商而改变,或者也是固定的呢?

我正在尝试在startMonitoringSignificantLocationChanges回调中查找电话是否漫游,因此希望避免地理定位。

1个回答

20

我现在正在漫游 - 在瑞士使用AT&T iPhone 4连接到Swisscom。我刚写了一个快速的程序进行测试,以下是测试结果:

2011-04-29 09:01:55.657 test[2094:707] Carrier Name: AT&T
2011-04-29 09:01:55.665 test[2094:707] ISO Country Code: us
2011-04-29 09:01:55.669 test[2094:707] Mobile Country Code: 310
2011-04-29 09:01:55.678 test[2094:707] Mobile Network Code: 410

因此,回答你的问题,看起来移动网络代码没有改变(410是AT&T,如下所述)。


1
感谢您的查看!根据http://en.wikipedia.org/wiki/Mobile_Network_Code,国家310 =美国,网络代码410(在国家310中)是AT&T。因此,所有这些信息似乎都是直接从SIM卡中读取的。 - Seatwarmer
1
是的 - 在英国测试过,仍然是410。我对移动网络代码的理解有误。已在上面澄清答案。 - Dan Bennett
唯一检测漫游的机制是通过读取一个未记录的系统文件请参见上一个问题,这违反了苹果的规定。 - joneswah
你也可以使用反向地理编码来计算你当前所在的国家,并将其与运营商的国家进行比较。虽然这并不是非常可靠,但总比没有好。 - Gordon Dove

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