2013-07-17 10 views
6

私はiOSアプリケーションでローミングエリアに入るときに通知を受けたいと思っています。すでにNSLocaleSCNetworkReachability、コアテレフォニー(不足している可能性があります)のドキュメントを読んでいます。私はsim(または可能であれば他の方法)からこの情報を得る必要があります。IOSでローミングステータスを取得する方法

+1

を助けhttp://stackoverflow.com/questions/900547/is-there-any-way-to-determiこの2つの質問をご確認ください携帯電話のローミングとhttp://stackoverflow.com/questions/12473490/is-there-any-ways-to-detect-the-roaming-status-on-ios-6 –

+0

plz shareコード...あなたはこれまでに – madLokesh

+1

を試しましたが、私はIPアドレスを追跡して試して、そのIPの場所を与えることができるWebサービスを呼び出しましたが、Webサービスを使用するとは考えていません。私は、コアテレフォニーのモバイル国コードを使用して国コードを比較することができます。 2)2番目の制限は、私たちはこの情報のためにSIMに頼らなければならないということです。simからの情報を取得する方法を意味します – Rana

答えて

1

ローミングステータスを検出するためのiOS APIはありませんが、http://ipinfo.io(自分のサービス)のようなサードパーティのサービスを使用して、デバイスのIPアドレスに基づいて偶数キャリアコードの現在の国を調べることができます。それをCTCarrierの詳細と比較して、デバイスがローミング中であるかどうかを判断できます。ここでは、標準ipinfo.io APIレスポンスです:もかかわらず、モバイルIPのMCC/MNC詳細を含むパッケージが用意されてい

$ curl ipinfo.io/24.32.148.1 
{ 
    "ip": "24.32.148.1", 
    "hostname": "doc-24-32-148-1.pecos.tx.cebridge.net", 
    "city": "Pecos", 
    "region": "Texas", 
    "country": "US", 
    "loc": "31.3086,-103.5892", 
    "org": "AS7018 AT&T Services, Inc.", 
    "postal": "79772" 
} 

カスタム。詳細はhttp://ipinfo.io/developersを参照してください。

+0

これはVPNでどのように機能しますか? –

+0

これは、VPNなしで携帯電話ネットワークに接続する場合にのみ機能します。 iOS APIを使用しているユーザーがWi-Fi /携帯電話にいるかどうかを検出できます。また、ipinfo.ioの応答では、携帯電話の接続かどうかが示されます。 –

2

一般的な方法は、通信事業者の国コードをコアテレフォニーインターフェイスから取得し、それをその場所を逆ジオコーディングした国コードと比較することです。

利点:VPNで動作し、ローミング時にユーザーがデータを無効にした場合。 短所:場所なしでは機能しません。

私はあなたのための任意の非著作権コードを持っていませんが、場所マークに必要なキーはあなたが国コードのために必要な辞書がある@「国番号」 ジオコーディングは次のようになり、何かのように: -

CLGeocoder* geocoder = [[CLGeocoder alloc] init]; 
[geocoder reverseGeocodeLocation:location completionHandler: ^(NSArray* placemarks){}] 
プロバイダの

国コードが

NSString* homeCountry = [netInfo.subscriberCellularProvider isoCountryCode]; 

希望になり、これは

+0

しかし、私が海外にいるとき、isoCountryCodeは、逆のジオコーディング位置の国コードと同じ_same_です。たとえば、ドイツに行くと、CoreTelephonyは「de」を返し、reverseGeoCodeLocationも「de」を返します。 *ローミングしない? – dOM

関連する問題