デバイスのタイムゾーンが変更されたときに、自分のアプリケーションから通知を受けることはできますか?アプリケーションがフォアグラウンドのときに通知を出したい。 NSTimezoneは、私がタイムゾーンを継続的にチェックする必要があるため、私のために働いていません。iOSでタイムゾーンの変更に関する通知を受け取る
答えて
UIApplicationDelegate
には、時間に大きな変化があるときに呼び出されるapplicationSignificantTimeChange:
というメソッドがあります。ドキュメントに記載されている
例は:かなりの時間変化の
としては、真夜中の到着、キャリアによって時間の更新、および夏時間の変更を含む
しかし、タイムゾーンの変更は大きな時間の変化としてカウントされると思います。
ドキュメントはまた、時間変更が発生した場合、あなたのアプリがバックグラウンドで動作しているとき、あなたのアプリケーションが現在中断されている場合は、このメッセージはあなたまでキューイングされるフォアグラウンド
に行くとき、あなたはそれを得るだろうと言いますアプリケーションはフォアグラウンドに戻り、その時点で配信されます。
UIApplicationSignificantTimeChangeNotification
を投稿すると、アプリ内のどこでも同じ情報が表示されます。
アプリがフォアグラウンドに置かれ、アプリがバックグラウンドになっていない期間ユーザーがタイムゾーンを変更するか、別のタイムゾーンに移動します。それは期待された行動ですか? Androidの場合、アプリがバックグラウンドであっても、そのようなブロードキャストはアプリに送信されますが、デザインが非常に異なる2つの異なるOSであることがわかります。 –
https://developer.apple.com/reference/uikit/uiapplicationdelegate/1622992-applicationsignificanttimechangeがフォアグラウンドにあるときに実際に配信されていることに気付きました。私はアプリがバックグラウンドにある間に私がそれを理解することができれば私は方法を見つける必要があると思う。たぶん、それを達成するためにバックグラウンドフェッチを使用します。 –
あなたが観察したすべてのiOS通知は、アプリケーションがフォアグラウンドになるまでキューに入れられます。アプリがバックグラウンドにある間に何かを特別に処理する必要がある場合は、バックグラウンドフェッチを行うことができます。実際のバックグラウンド処理を行うには、アップルから「資格」を取得する必要があります。 – leanne
ちょうど NSSystemTimeZoneDidChangeNotification
を聞きます。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(timeZoneChanged) name: NSSystemTimeZoneDidChangeNotification object:nil];
たとえば、deallocメソッドなどで登録を解除することを忘れないでください。
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSSystemTimeZoneDidChangeNotification object:nil];
「timeZoneChanged here」というオブザーバーメソッドは、アプリケーションがフォアグラウンドに置かれ、アプリケーションがバックグラウンドにあり、ユーザーがタイムゾーンを変更したり、別のタイムゾーンに移動したりしている間ではなく、呼び出されます。それは期待された行動ですか? Androidの場合、アプリがバックグラウンドであっても、そのようなブロードキャストはアプリに送信されますが、デザインが非常に異なる2つの異なるOSであることがわかります。 –
アプリが再開されると通知が届きます。 –
チェックこのhttps://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSTimeZone_Class/Reference/Reference.html –
これをチェックhttp://stackoverflow.com/question/13741585/ipad-date-time-settings-when-ipad-date-time-settings-変更時の –