1

以前のローカル通知が発生したときにローカル通知をスケジュールしたい。ユーザーが「表示」または「キャンセル」をタップしても、スケジュールが設定されるはずです。新しい通知をスケジュールするための適切な場所(デリゲートメソッド)が取得されていません。Appleドキュメントによると、アプリケーション:(UIApplication *)アプリケーションdidFinishLaunchingWithOptions:は使用できますが、アプリケーションがバックグラウンドからフォアグラウンドになり、アプリケーションがフォアグラウンドになったときに呼び出されないようです:(UIApplication *)application didReceiveLocalNotification:[表示]をクリックしたときにのみ呼び出され、閉じるときは呼び出されません。これを行うにはどうすればよいですか?感謝。

4

1 に答える 1

0

はい。あなたはローカル通知について正しいです。クリックしてトリガー"view"を取得する必要があります。didReceiveLocalNotification:をクリック"Cancel"すると、通知は気になりません。気にしないのなら、なぜiOSが気にする必要があるのでしょうか。:-)

通知をスケジュールしています。だから、あなたはそれがいつ解雇されるかを知っています。そうでしょう?では、なぜ最初の通知が発行されるのを待つのでしょうか。最初の通知と一緒に2番目の通知をスケジュールするだけです。

回避策:

ローカルおよびプッシュ通知プログラミングガイド によると、アプリごとに許可されるローカル通知は64個のみです。したがって、最初に最初の64件の通知をスケジュールします。そして、アプリが次に開いたときに[UIApplication sharedApplication] scheduledLocalNotifications]、次の(64-scheduledLocalNotifications)通知を確認してスケジュールします。

int scheduledNotifications = [UIApplication sharedApplication] scheduledLocalNotifications];  
int n = 64 - scheduledNotifications;  
[self Schedule-next-n-notifications];

注:これが完全に機能することを保証することはできません。非常に長いギャップの後、たとえば1か月または2か月後にアプリが開いた場合、一部の通知は適切な時間にスケジュールされていません。

于 2011-06-20T06:41:03.253 に答える