2011-11-15 18 views
7

iPadアプリをコーディングしていて、日曜日が日曜日に変更されたときにグラフィックを変更する必要があります。iOSでタイムイベントを処理するにはどうすればよいですか?

私の簡単な解決策は- (void)applicationDidBecomeActive:(UIApplication *)applicationまたは-(void)viewWillAppear:(BOOL)animated方法で一日をチェックして、アプリがアクティブである間に日が日曜日に変更されているかどうかをチェックするために、すべての10分のようにタイマーを設定することです。

これを処理する別の方法、おそらく効率的な方法がありますか?

答えて

13

、次のメソッドを実装します。 -(void)applicationSignificantTimeChange:(UIApplication *)application

このメソッドが呼び出されたとき、またはデバイスの時間が、何らかの理由でバックグラウンドで変更された場合(たとえば、タイムゾーンの変更などの日変化)。

1

日時の変更の通知があります。あなたはそれを聞いて、それが起こったときに日曜日かどうかを調べることができます。

また、起動時に日曜日かどうかを確認する必要があります。

+0

通知が呼び出された方法を知っていますか、私はどこにも見つかりません... – Ecarrion

1

解決策は何ですか?いくつかの場所で10分ごとに1回より頻繁に日曜日になるのでしょうか?

あなたが考慮したいことが1つあります。タイマーメソッドでは、時間が23:50を過ぎるとタイマーをより早く(つまり00:00頃)再スケジュールするので、真夜中を正確にキャッチする可能性が高くなります。

+1

時間のある程度ごとに日付を尋ねるタイマーを持っているという考えが気に入らない、汚い感じがする - ) – Ecarrion

1

この章では、更新する通知のいくつかのタイプを使用して、有用であることが証明されることがあります

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1

私自身は、使用しているのと同じ溶液で終わったが、それだけで簡単に、私が見つけるより信頼性の高いです。

+0

なぜあなたはより信頼できると思いますか? – Ecarrion

+0

デバイスが深い眠りに入ると問題があるようです。私はあなたが正しく動作するようにするためにリモート通知を登録する必要があるかもしれないと思う...アップルはこれのための適切な解決策を持っていないように見える奇妙なことに、Androidはこのようなことを大いにサポートしている。 –

4

「viewWillAppear:」と「applicationDidBecomeActive:」という同じ2つの方法を使用し、10分ごとにタイマーを設定する代わりに、現在の時刻と次の時刻の間の時間を計算するだけです日曜日。その時間間隔をとり、日曜日の真夜中に正確に発動するタイマーを設定するために使用します。あなたのappliciationデリゲートで

関連する問題