とにかく、電話がどのタイムゾーン/国にあるかを知るためにありますか?位置情報サービスを使用したくない。
これの目的は、コールを自動的にルーティングすることです。ユーザーが米国にいる場合は、米国ベースのコールセンターを呼び出すようにデフォルトでアプリを設定します。ユーザーが別の国にいる場合は、デフォルトでコールセンターになります。
ありがとう!
次を使用してローカルタイムゾーンの名前を取得できます。
NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSString *tzName = [timeZone name];
名前はAustralia/Sydney
、またはEurope/Zurich
、またはAmerica/Denver
のような名前になります。あなたは大陸だけを気にするかもしれないように聞こえるので、それがあなたが必要とするすべてかもしれません。
さらに必要な場合: http://www.iana.org/time-zones で公式タイムゾーンデータベースを取得します。 tzdata2013g.tar.gz
(またはこれを読んでいるときにtzdataYYYYx.tar.gz
の最新バージョンが何であれ)をダウンロードします。そのアーカイブにはzone.tab
という名前のファイルがあり、各タイムゾーンの緯度/経度を示します。次に例を示します。
CH +4723+00832 Europe/Zurich
+4723+00832
は、緯度= +47º23 "、経度= +8º23"を示します。
Update:場合によっては(どちらかわからない)、タイムゾーン名はUS/Pacific
のような古いスタイルの名前かもしれませんzone.tab
にリストされていません。これらを処理するには、backward
というファイルも取得します。これは、古い名前から現在の名前への翻訳を提供します。
zone.tab
をアプリで使用できるものに変換するかどうかはユーザー次第です。結果は位置情報サービスほど正確ではありませんが、一般的なアイデアを提供します。しかし、それは保証されていません。いくつかの状況で失敗します。
ユーザーは設定でタイムゾーンを変更します。ほとんどのユーザーは自分の電話で時間とゾーンを自動的に設定できますが、全員ではありません。ユーザーがタイムゾーンを変更すると、正確なものではなく、ユーザーが望むものを取得できます。
デバイスは正しいローカルタイムゾーンを特定できません。ネットワークの問題により、電話機が時刻とゾーンを正確に設定できない場合があります。たとえば、ユーザーが飛行機で旅行し、着陸時にネットワークに問題がある場合、電話は出発地からのタイムゾーンを表示する場合があります。
更新:最後のコメントの後、回答を変更しています。
電話機のIPの逆ルックアップを使用して、位置情報を見つけることができます。 利用可能な複数のREST API があります。
これはAppleがアプリケーションを拒否する可能性があります。安全な賭けはAppleが提供する ロケーションサービス
NSTimeZone *timeZoneLocal = [NSTimeZone localTimeZone];
NSString *strTimeZoneName = [timeZoneLocal name];
or
NSTimeZone *timeZoneLocal = [NSTimeZone defaultTimeZone];
NSString *strTimeZoneName = [timeZoneLocal name];