3

私は、事前に定義されたデータベースとは異なる時間に、正確には 1 日 5 回、毎日ユーザーに通知するプロジェクトを開発しています。

5times*365days = 1825私の問題は、これらすべての時間、発射日をどのようにスケジュールするかです!! それらすべてをスケジュールすることは可能ですか?

どんなアイデアでも大歓迎です

4

2 に答える 2

13

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

それが役に立てば幸い。

于 2012-04-27T00:46:43.067 に答える