有没有办法检测iOS 6上的漫游状态?

Joa*_*ong 14 roaming jailbreak ios ios6

我的应用程序使用以下方法来检测iOS 4和5中的漫游.

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]); 
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Tra*_*hor 6

这是我从苹果得到的答案:

"确实.不幸的是,这些文件从未被记录为公共API,因此从未打算被第三方应用程序使用.在很多情况下,这些限制是通过技术上由iOS沙箱或在行政上由App Review强制执行的.然而,这些过程都不是完美的,并且有时应用程序最终会做一些他们不应该做的事情.不幸的是,这会使这些应用程序在执行改进时处于困境,就像在这种情况下发生的那样.

至于直接解决方法,确实没有一个.iOS上唯一的公共电话API由Core Telephony框架提供.它的CTTelephonyNetworkInfo类为您提供有关用户"家庭"蜂窝服务器的信息,而不是关于他们漫游的网络."

他们建议你使用geo-ip检查.