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

我的应用程序使用以下方法来检测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]);

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

谢谢.

解决方法

这是从苹果得到的答案:

“事实上,不幸的是,这些文件从来没有被公开为API,因此,这些从来没有被第三方应用程序所使用.在许多情况下,这些限制在技术上由iOS沙箱或者由App Review管理地执行.然而,这两个过程都不​​是完美的,而且有些应用程序最终也不会做这些事情,在执行过程中,这些应用程序在这种情况下已经发生了,这使得这些应用程序处于困难的位置.

对于直接的解决方法,真的没有一个.核心电话框架提供了iOS上唯一的公共电话API.它的CTTelephonyNetworkInfo类提供了有关用户的“家庭”蜂窝服务器的信息,而不是关于他们正在漫游的网络.

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...