我正在开发一个 iPhone 应用程序,并且真的很想确定设备是否正在漫游,这样我就可以智能地避免在用户离开家庭网络时花费昂贵的连接费用。
我正在编写的应用程序是针对越狱手机的,但如果可能的话,我更愿意使用标准 SDK。
这是我已经找到的:
1. Apple SDKs: 在Apple 文档中,我发现了Apple 的SCNetworkReachability API 中的promise。该 API 提供对诸如您是在 WIFI 还是手机网络上、当前是否建立网络连接等内容的访问。但是,在 SCNetworkReachability API 参考 pdf 中搜索“roam”或“roaming”都为零。他们的示例代码也是如此。
2. 越狱 iPhone FS 的 Grep: 首选项 -> 常规 -> 网络选项卡是用户可以打开或关闭漫游的地方。查看 plist 文件(“/Applications/Preferences/Network.plist”)我能够找到以下参考:
PostNotification = "com.apple.commcenter.InternationalRoamingEDGE.changed";
cell = PSSwitchCell;
default = 1;
defaults = "com.apple.commcenter";
key = InternationalRoamingEDGE;
label = "EDGE_ROAMING_TOGGLE";
requiredCapabilities = (
telephony
);
这当然是一个线索,因为看起来我可以注册用户更改国际漫游设置的通知。不过,我不确定如何将其转化为他们实际上正在漫游的知识。
3. 检查 SpringBoard 的类转储源: 我已经使用class-dump 转储了 SpringBoard 的类。我找不到任何提及“漫游”或“漫游”
4. 显然,我首先在 SO 上进行了检查: 找不到任何相关的东西。
进一步的步骤:这里有人有什么建议吗?我知道这是可能的。然而,苹果显然很难找到它。我非常怀疑这在不使用私有框架的情况下是否可行。(例如 CoreTelephony)。由于这是一个越狱的应用程序,我可能会使用 SpringBoard 中的注入代码对运营商名称进行屏幕抓取,但我真的不想走这条路。非常感谢任何建议。谢谢。