2012-04-26 15 views
3

ユーザーは、あらかじめ定義されたデータベースと異なる時刻に1日に5回、正確になるようにユーザーに通知するプロジェクトを開発しています。私の問題は、これらすべての時間をどのようにスケジュールするか、5回* 365日= 1825発射日です!それらをすべてスケジュールすることは可能ですか?異なる時刻に毎日ローカル通知を発行する

任意のアイデアは非常に多くのAppleのドキュメントによると

+0

地元の通知をバックグラウンドで処理する方法はありますか? – ilhnctn

答えて

12

をいただければ幸いです。

アプリケーションは、スケジュールの通知だけ数が限られていることができます。システムは、(自動的にスケジュール変更通知は、単一の通知としてカウントして)最も早い発射64の通知を保持し、残り

私は通知の「キュー」を設定することで、その問題を解決し破棄します。たとえば、私のアプリでは、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++; 
     } 

} 

このタイプのカウントが0の場合、アプリはさらに多くの通知をスケジュールします。通知が表示されている場合

は最後に、例えば、毎日同じ時間に、あなたは repeatIntervalプロパティ を使用することができますが、あなたがあなた自身の繰り返し間隔を作成することはできません、あなただけの NSCalendarUnitで定義された繰り返し間隔を使用することができます。

希望します。

+0

はい、同じようなものを使用しました。待ち行列の通知リストを作成し、アプリが開いたときにそれを歩いています。実際、このスキームでは、あなたのキューに「意味」が記録されているため、未通知の通知が1つしか必要ありません(ただし、通知が到着し、バッジ番号のものが期待どおりになるようにスケジュールするのは良いことです)。アプリは実行されていません)。 –

+0

@Eduこれは私を大いに助けましたが、それは私の心にかかっていましたが、それを達成する方法はわかりませんでしたが、ユーザーが毎回アプリをポーズするたびに64未満の通知セットをスケジューリングすることにより、保留中の通知がないことを確実にするため、1825年は正確に同じ時間を次の年に繰り返すので、kCFCalendarUnitYearにrepeatIntervalプロパティを設定すると、来年、もっと通知をスケジュールする必要はありませんか? – 4mahmoud

+0

はい、NSCalendarUnitがちょっと面倒なので、いくつかの通知を設定して、どのように動作するかあなた自身で確認することをお勧めします。私のiPhoneの日付を変更することで、repetitiveIntervalの使い方を知ることができます。そうすることをお勧めします。 repeatedIntervalを指定した通知はONE通知としてカウントされることも重要です。 :) – Edu

1

イベントキットフレームワークを使用して、リマインダー、イベント、アラームを追加することができます。試してみることができます。

1)UILocalNotificationのような通知制限はありません。

2)イベントキットを使用すると、時間ベースのイベントとロケーションベースのイベントの両方を追加できます。

3)プライバシーについても心配する必要はありません。

UILocalNotificationとEventKit両方がそれ自体で強力ですが...という

注:EventKitフレームワークのための上記のIOS 6または

は、それはあなたのニーズに応じて、そのいずれかを選択することができ件までです。

以下のリンクは、あなたの

Resource 1

Resource 2を良いヘッドスタートを与えます。

下の画像は、あなたに偶然キットがどれくらい良いかを示してくれます。

EventKit_image

使用eventkitそれはあなたのニーズに合った場合。

関連する問題