2012-12-08 9 views
22

エキスパートの場合、1日3回(午前、午後、夕方)にユーザーに通知する必要があります。これらの通知のタイミングは、各日付のデータベース値に基づいて、日ごとに異なります。次のシナリオでローカル通知をスケジュールするにはどうすればよいですか?

これら3つの通知は設定可能です。意味のあるユーザーは、午後と夕方の設定を選択し、設定の下で午前の通知をオフにすることができます。

私の理解によれば、ローカルの通知を使用してこれを達成できます。

私は以下を行うことができます: - アプリケーションが終了する前に、didFinishLaunchingWithOptionsの内部で、次回の通知が何であるかを確認できます(オン/オフ)。それが設定されている場合、私はそれをスケジュールします。そうでない場合は、次の通知タイプに移り、同じことをします。すべての通知がオフになっている場合、通知はスケジュールされません。通知が現れたときに

は今、私は2つの「閉じる」ボタンと「ビュー」との警告を参照してもらいます。 ユーザーが「表示」を選択した場合マイアプリがアクティブに戻り、ユーザーが終了する前に次の通知がスケジュールされます。

これまでのところとても良いです。

ユーザーが[閉じる]を選択するとどうなりますか?それは私のアプリを起動し、結果的に次の通知がスケジュールされることはありませんか?

どうすればよいですか? これを行うにはもっと良い方法はありますか?

ヘルプ!助けて!助けて!

+0

あなたのやりたいことが非常にやりがいのある、または使用可能なようには聞こえません。要件を再検討し、問題を別の方法で解決しようとすることをお勧めします。 –

答えて

37

すべての通知(または多くの通知)を一度に行うことができます。ユーザーがを表示するのを待つ必要はありません。を表示して、次の通知をスケジュールします。 the docs on UILocalNotificationから

アプリケーションは、スケジュール 通知の唯一の数が限られていることができます。システムは、(自動的にスケジュール変更通知は、単一 通知としてカウントして)最も早い発射64の通知 を維持し、あなたが一日あたり3つの通知を持っている場合、あなたは事前にスケジュールすることができ、3週間の、だから、残り

を破棄します一度に通知。ユーザーが1か月間あなたのアプリを開かない場合でも問題は残っていると思いますが、そのシナリオについて心配する必要はありますか?

とにかく、私は念のそれはあなたがこれらの通知を一つずつスケジュールする必要がないことは明らかだしたかったです。

例:

UILocalNotification* n1 = [[UILocalNotification alloc] init]; 
n1.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60]; 
n1.alertBody = @"one"; 
UILocalNotification* n2 = [[UILocalNotification alloc] init]; 
n2.fireDate = [NSDate dateWithTimeIntervalSinceNow: 90]; 
n2.alertBody = @"two"; 
[[UIApplication sharedApplication] scheduleLocalNotification: n1]; 
[[UIApplication sharedApplication] scheduleLocalNotification: n2]; 

がだから、最初の通知が表示されたときに、ユーザーが閉じるを選択した場合でも、二つ目は、まだ配信されます。それが閉じる前ところで

は、didFinishLaunchingWithOptions方法は右に、右のアプリケーションが起動した後でない呼び出されます。つまり、いつでも新しい通知をスケジュールすることができます。

+0

ありがとうございました。私はそれについて考えていましたが、それが正しいかどうかは分かりませんでした。 –

3

また、repeatIntervalプロパティを使用して、無期限に再スケジュールすることもできます。ただし、単位はNSCalendarUnitに限定されています。詳細はdocsを参照してください。

関連する問題