【问题标题】:Is there any ways to detect the roaming status on iOS 6?有什么方法可以检测 iOS 6 上的漫游状态吗?
【发布时间】:2012-09-10 12:13:27
【问题描述】:

我的应用程序使用以下方法检测 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 文件位置,是否有人面临同样的问题,谁能帮我解决这个问题?

谢谢。

【问题讨论】:

  • 对我来说同样的问题!如果有人找到解决方案。 operatorPListSymLinkPath 为零原因:错误 257,不允许操作
  • 这不是(旧)链接问题的副本,因为这个问题是关于 iOS 6 的,其中链接问题中的解决方案不再有效。

标签: ios jailbreak ios6 roaming


【解决方案1】:

自 iOS6 beta 1 以来在这里面临同样的问题,因为该版本 /var/mobile/Library/Preferences/com.apple.operator.plist sym-link 不再可逆。

现在没有其他设备专用方式是公开的,与此同时,唯一的解决方案是通过 geo-ip 检查 ip,如 Trausti Thor 所说,或者检查 ip 类,如果你正在为单一运营商开发应用程序。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2023-01-22
      相关资源
      最近更新 更多