21

アプリの「未読」バッジを。でクリアしようとしていUILocalNotificationます。applicationIconBadgeNumber論理的には、これはインスタンスを0に設定することで行われると思います。 UILocalNotificationしかし、それは機能せず、applicationIconBadgeNumberのドキュメントには、「デフォルト値は0、つまり「変更なし」」と記載されています。

では、一度設定されたバッジをローカル通知でクリアする方法は本当にありませんか?

更新:いくつかの簡単なコード:

-(void)applicationDidFinishLaunching
{
    // Set the appication icon badge to 1 in 10 minutes, using a local notification so it works in the background:
    // This works fine.

    UILocalNotification *episodeNotification = [[UILocalNotification alloc] init];
    episodeNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:(60 * 10)];
    episodeNotification.timeZone = [NSTimeZone defaultTimeZone];
    episodeNotification.applicationIconBadgeNumber = 1;

    [[UIApplication sharedApplication] scheduleLocalNotification:episodeNotification];
    [episodeNotification release];


    // Clear the application icon badge in 20 minutes, again using a local notifcation so it works in the background:
    // This doesn't work.  According to the docs for local notification it's not supposed to
    // because (applicationIconBadgeNumber = 0) means "Do not change the badge"
    // I'm looking for an alternative if it exists.

    UILocalNotification *clearEpisodeNotification = [[UILocalNotification alloc] init];
    clearEpisodeNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:(60 * 20)];
    clearEpisodeNotification.timeZone = [NSTimeZone defaultTimeZone];
    clearEpisodeNotification.applicationIconBadgeNumber = 0;

    [[UIApplication sharedApplication] scheduleLocalNotification:clearEpisodeNotification];
    [clearEpisodeNotification release];
}
4

2 に答える 2

28

私も同じ問題を抱えていました。ローカル通知からバッジを設定する場合、バッジを0に設定すると、「変更なし」のデフォルトになりますが、アプリケーションから直接バッジを設定すると、バッジがクリアされます。ローカル通知を介して負の数に設定すると、問題が解決しました。

試す:

clearEpisodeNotification.applicationIconBadgeNumber = -1;
于 2011-06-09T06:09:25.783 に答える
19

はい、アプリ自体からバッジをクリアすることは可能です。

私は自分のアプリの1つで以下のコードを使用していますが、期待どおりに機能します(つまり、バッジをクリアします)。

//clear app badge
[UIApplication sharedApplication].applicationIconBadgeNumber=0;
于 2011-03-21T08:43:44.403 に答える