有什么方法可以检测iOS 6上的漫游状态吗?

问题描述:

我用下面的方法应用到检测roamming中的iOS 4和5有什么方法可以检测iOS 6上的漫游状态吗?

NSString *carrierPListSymLinkPath = @"/var/mobile/Library/Preferences/com.apple.carrier.plist"; 
NSString *operatorPListSymLinkPath = @"/var/mobile/Library/Preferences/com.apple.operator.plist"; 

NSFileManager *fm = [NSFileManager defaultManager]; 
NSError *error = nil; 

NSString *carrierPListPath = [fm destinationOfSymbolicLinkAtPath:carrierPListSymLinkPath error:&error];  

NSString *operatorPListPath = [fm destinationOfSymbolicLinkAtPath:operatorPListSymLinkPath error:&error]; 

return (![operatorPListPath isEqualToString:carrierPListPath]); 

但这个代码总是在iOS6的返回false(即使我不是漫游,它总是返回false),我认为这也许是的plist文件位置由Apple更改,任何人都面临同样的问题,任何人都可以帮助我吗?

谢谢。

+0

对我来说同样有问题!如果有人找到了解决方案。 operatorPListSymLinkPath是零原因:错误257,操作不允许 – Vassily

+0

可能重复[有什么方法可以确定iPhone是否在漫游?](http://*.com/questions/900547/is-there-any-way-以确定如果iphone是漫游) –

+3

这不是一个(旧)链接问题的重复,因为这个问题是关于iOS 6,其中链接问题的解决方案不再起作用。 – Nate

这是一个答案,我从苹果得到:

“的确不幸的是这些文件从未被记录为公共API和,因此,从来没有打算通过第三方应用程序可以使用在很多情况下。这些限制在技术上由iOS沙箱或App Review实施,但这些过程都不是完美的,有时应用程序最终会做自己不应该做的事情,不幸的是,这会将这些应用程序置于在这种情况下,强制执行改善时的困难位置

至于直接的解决方法,实际上并没有一个,iOS上唯一的公共电话API是p被核心电话框架所鼓舞。它CTTelephonyNetworkInfo类为您提供有关用户的“家”移动服务器的信息,不是他们漫游的网络。”

他们建议您使用地理IP检查。

这里面临着同样的问题,因为iOS6的Beta 1中,因为该版本/var/mobile/Library/Preferences/com.apple.operator.plist符号链接是没有更多的可逆式。

没有其他设备,唯一的办法是公开的,现在,在这段时间里独特的解决方案是通过geo-ip来检查IP,如Trausti Thor所述,或者如果您正在检查ip class为单个运营商提供应用程序。