私のアプリはバックグラウンドで実行され、Bluetooth データを監視します。データが入ってくると、入ってきたばかりのデータを処理できるように、ユーザーがアプリケーションを開く必要があるという通知を表示します。
iOS 5以降に書いています。
このコードを使用して通知を行います。
UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];
if (alarm) {
alarm.fireDate = [NSDate date];
alarm.timeZone = [NSTimeZone defaultTimeZone];
alarm.repeatInterval = 0;
alarm.soundName = @"alarmsound.caf";
alarm.alertBody = message;
[app scheduleLocalNotification:alarm];
}
そのコードからわかると思いますが、通知はすぐに発生します。
私が抱えている問題は、通知バーに既に通知があるかどうかを検出できないように見えることです。私は使用してみました:
NSArray *oldNotifications = [app scheduledLocalNotifications];
// Clear out the old notification before scheduling a new one.
if ([oldNotifications count] > 0)
[app cancelAllLocalNotifications];
ただし、通知バーに大量の通知があるにもかかわらず、oldNotifications カウントは常に 0 であるため、これはうまくいかないようです。これは、通知が既に発生しているためだと思いますか?
基本的に、アプリを開かずにその通知を却下しない限り、ユーザーに一度だけ通知したい. アプリケーション バッジの値をインクリメントして、ユーザーが受信した Bluetooth メッセージの数を知ることができると便利です。代わりに、受信メッセージごとにまったく新しい通知を受け取るだけです。
ユーザーに一度だけ通知し、通知を却下した場合にのみ再度通知するにはどうすればよいですか?