私はiPhoneアプリケーションに取り組んでおり、デバイスがローミングしているかどうかを確認して、ホームネットワークの外にいる場合にユーザーに高額な接続のコストをインテリジェントに回避できるようにしたいと考えています。
私が書いているアプリケーションはジェイルブレイクされた電話用ですが、可能であれば標準のSDKを使用したいと思います。
これが私がすでに見つけたものです:
1. Apple SDK:Apple のドキュメントで、AppleのSCNetworkReachabilityAPIに約束があります。APIは、WIFIまたは携帯電話ネットワークに接続しているかどうか、ネットワーク接続が現在確立されているかどうかなどへのアクセスを提供します。ただし、SCNetworkReachability APIリファレンスPDFで「ローミング」または「ローミング」を検索すると、どちらもnilになります。彼らのサンプルコードもそうです。
2.ジェイルブレイクされたiPhoneFSの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
);
ユーザーがInternationalRoaming設定を変更したという通知にサインアップできるように見えるので、これは確かにリードです。それでも、これを実際にローミングしているという知識に変える方法はわかりません。
3.SpringBoardのクラスダンプされたソースを確認します。class -dump を使用してSpringBoardのクラスをダンプしました。「ローミング」または「ローミング」への参照が見つかりませんでした
4.明らかに、私はSOでこれをチェックすることから始めました: 関連するものは何も見つかりませんでした。
さらなるステップ:誰かがここで何かアドバイスがありますか?私はこれが可能であることを知っています。しかし、Appleは明らかに見つけるのを非常に難しくしています。プライベートフレームワークを使用せずにこれが可能かどうかは非常に疑わしいです。(CoreTelephonyなど)。これはジェイルブレイクされたアプリなので、SpringBoardに挿入されたコードでキャリア名をスクリーンスクレイピングすることに頼るかもしれませんが、私はむしろそのルートに行きたくないのです。どんなアドバイスも大歓迎です。ありがとう。