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

14

我的应用程序使用以下方法来检测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文件的位置,有没有人遇到过同样的问题,能否帮助我解决?

谢谢。


我也遇到了同样的问题!如果有人找到了解决方案,请分享一下。operatorPListSymLinkPath为nil,导致错误257:操作不允许。 - Vassily
可能是重复问题: 有没有办法确定 iPhone 是否在漫游? - Black Frog
3
这并不是与(旧)链接问题重复的问题,因为这个问题涉及到iOS 6,而链接问题中的解决方法已经不再适用。 - Nate
2个回答

6

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

"确实。 不幸的是,这些文件从未被记录为公共API,并且因此从未打算供第三方应用程序使用。 在许多情况下,要求加强这样的限制,无论是通过iOS沙箱技术还是通过应用审查行政手续来执行。 然而,这两个过程都不完美,有时应用程序会做它们不应该做的事情。 不幸的是,当强制执行提高时,这使这些应用程序处于困境中,就像在这种情况下发生的那样。

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

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

"


1

自从iOS6 beta 1以来,我也遇到了同样的问题,因为在那个版本中,/var/mobile/Library/Preferences/com.apple.operator.plist符号链接不再可逆。

现在没有其他设备唯一的方法是公开的,同时唯一的解决方案是通过地理IP检查IP,就像Trausti Thor所说的那样,或者如果您正在为单个运营商开发应用程序,则检查 IP类


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