iOSのNotificationでは、アプリケーションアイコンの右肩に数字(バッジ)を表示することができるけど、その数字を消去するときにちょっとした落とし穴があるのでメモ。まずはUIApplicationオブジェクトを取得して直接バッジを設定する場合。
(1)アプリケーションオブジェクト(UIApplication)を通じて直接、バッジ設定する場合
[UIApplication sharedApplication].applicationIconBadgeNumber = badgeNumber;
この場合は、badgeNumber(NSInteger)の数字が正の数であれば、バッジ数字が表示、ゼロであればバッジアイコンは消去される。
ではローカル通知を通じた場合はどうなるか。
(2)ローカル通知オブジェクト(UILocalNotification)を通じたバッジ設定の場合。ちなみにローカル通知はiOS4から利用可能
NSInteger badgeNumber = 1;
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:30];//30秒後
notification.alertBody = @"ローカル通知メッセージ";
notification.applicationIconBadgeNumber = badgeNumber;
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
[notification release];
badgeNumberが正の数であれば、通知時に該当アプリのバッジにその数字が設定される。しかしゼロの場合は、直前のバッジ数字がそのまま残る。消去したい場合は、applicationBadgeNumberに負の数を設定すれば良い。ちなみに(1)のパターンのときもゼロでなく負の数を与えてもバッジは消える。