私は、事前に定義されたデータベースとは異なる時間に、正確には 1 日 5 回、毎日ユーザーに通知するプロジェクトを開発しています。
5times*365days = 1825
私の問題は、これらすべての時間、発射日をどのようにスケジュールするかです!! それらすべてをスケジュールすることは可能ですか?
どんなアイデアでも大歓迎です
私は、事前に定義されたデータベースとは異なる時間に、正確には 1 日 5 回、毎日ユーザーに通知するプロジェクトを開発しています。
5times*365days = 1825
私の問題は、これらすべての時間、発射日をどのようにスケジュールするかです!! それらすべてをスケジュールすることは可能ですか?
どんなアイデアでも大歓迎です
Appleのドキュメントによると:
アプリケーションは、限られた数のスケジュールされた通知のみを持つことができます。システムは、最も早く発生した 64 個の通知を保持し (自動的に再スケジュールされた通知は 1 つの通知としてカウントされます)、残りは破棄されます。
通知の「キュー」を設定することで、この問題を解決しました。たとえば、私のアプリには 3 つの異なるタイプの通知があります。タイプ A、B、C としましょう。
A、B、C の通知を翌月にスケジュールし、ユーザーがアプリを開くたびに、残りの通知数を確認しました。たとえば、A 通知がなくなった場合、アプリはさらに A 通知をスケジュールします。
どうすればこれを達成できますか?
通知をスケジュールするたびに、userInfo
プロパティを使用します。と呼ばれるキーと値を持つ辞書を設定しtype
ます。
私のアプリ デリゲートでは、保留中のすべての通知を確認し、タイプごとに残っている数を数えます。コードは次のようになります。
NSArray *scheduledNotifications = [UIApplication scheduledLocalNotifications];
NSUInteger AType, BType, CType;
for (UILocalNotification *notif in scheduledNotifications) {
//Classify notifications by type
NSUInteger notifType = [[notif.userInfo objectForKey:@"type"]integerValue];
if (notifType == 0) {
AType++;
}else if(notifType == 1){
BType++;
}else{
CType++;
}
}
いずれかのタイプのカウントがゼロの場合、アプリはさらに通知をスケジュールします。
最後に、たとえば毎日同じ時間に通知が表示される場合は、repeatInterval
プロパティを使用できますが、独自の繰り返し間隔を作成することはできず、 で定義された繰り返し間隔のみを使用できますNSCalendarUnit
。
それが役に立てば幸い。