27

専門家の皆さん、私はユーザーに1日3回(朝、午後、夕方)通知する必要があるシナリオがあります。また、これらの通知のタイミングは、各日付のデータベース値に基づいて、毎日異なります。

これらの3つの通知は構成可能です。つまり、ユーザーは、設定で朝の通知をオフにしながら、午後と夕方を設定することを選択できます。

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

次のことができます。-アプリケーションが終了する前に、didFinishLaunchingWithOptions内で、次の通知の期限が設定されているか(オン/オフ)を確認できます。設定されている場合はスケジュールします。そうでない場合は、次の通知タイプに進み、同じことを行います。すべての通知がオフになっている場合、明らかに、通知はスケジュールされません。

通知が表示されると、「閉じる」と「表示」の2つのボタンでアラートが表示されます。ユーザーが[表示]を選択すると、アプリはアクティブに戻り、ユーザーが終了する前に次の通知がスケジュールされます。

ここまでは順調ですね。

ユーザーが「閉じる」を選択した場合はどうすればよいですか?アプリが起動せず、その結果、次の通知がスケジュールされませんか?

どうすればこれを達成できますか?これを行うためのより良い方法はありますか?

ヘルプ!ヘルプ!ヘルプ!

4

2 に答える 2

41

すべて(または多数)の通知を一度にスケジュールするだけです。次の通知をスケジュールするために、ユーザーがアプリを表示するのを待つ必要はありません。

UILocalNotificationのドキュメントから、

アプリケーションは、限られた数のスケジュールされた通知のみを持つことができます。システムは、最も早く起動する64の通知を保持し(自動的に再スケジュールされた通知は単一の通知としてカウントされます)、残りは破棄されます

したがって、1日に3つの通知がある場合は、一度に3週間の通知を事前にスケジュールできます。ユーザーが1か月間アプリを開かない場合でも問題が発生すると思いますが、そのシナリオについて心配する必要がありますか?

とにかく、これらの通知を一度に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];

したがって、最初の通知が表示されたときにユーザーが[閉じる]を選択した場合でも、2番目の通知は引き続き配信されます。

ちなみに、このdidFinishLaunchingWithOptionsメソッドは、アプリケーションが終了する直前ではなく、アプリケーションが起動した直後に呼び出されます。そうは言っても、いつでも新しい通知をスケジュールできます。

于 2012-12-08T04:03:10.223 に答える
3

repeatIntervalまた、プロパティを使用して、スケジュールを無期限に変更することもできます。ただし、の単位に制限されていますNSCalendarUnit。詳細については、ドキュメントを参照してください

于 2016-02-28T19:31:23.540 に答える