有什么方法可以检测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),我认为它可能是由Apple更改了plist文件位置,是否有任何人面临相同的问题,任何人都可以帮助我解决这个问题?
谢谢。
这是我从苹果得到的答案:
“确实,不幸的是,这些文件从来没有被记录为公共API,因此从来没有打算被第三方应用程序使用。在很多情况下,这些限制在技术上由iOS沙箱或App Review进行管理。然而,这些过程都不是完美的,有时候应用程序最终会做他们不应该做的事情。不幸的是,这些应用程序在执行改进时处于困难位置,就像在这种情况下发生的那样。
至于直接的解决方法,那里确实没有一个。 核心电话框架提供iOS上唯一的公共电话API。 它的CTTelephonyNetworkInfo类为您提供有关用户的“家庭”蜂窝服务器的信息,而不是他们正在漫游的网络。“
他们建议你使用地理ip检查。
从iOS6 beta 1开始就面临同样的问题,因为该版本的/var/mobile/Library/Preferences/com.apple.operator.plist sym-link不再可逆。
目前没有其他设备专用的方式公开,同时独特的解决方案是通过geo-ip来检查ip,正如Trausti Thor所说的那样,或者如果您正在为单个运营商开发应用程序,则需要检查ip class 。
链接地址: http://www.djcxy.com/p/58391.html上一篇: Is there any ways to detect the roaming status on iOS 6?