web-dev-qa-db-ja.com

iOSアプリのアイコンからバッジを削除する

作成しようとしているこのアプリケーションでは、プッシュ通知を使用しています。この部分はうまく機能します。通知を送信するときに、アプリアイコンにバッジも追加します。問題は、アプリケーションを昼食にしたときに再び消えるはずですが、消えないことです。

-(IBAction)Push{

    NSMutableDictionary *data = [NSMutableDictionary dictionary];

    [data setObject:@"Numfeud: Troels made a move!" forKey:@"alert"];

    [data setObject:[NSNumber numberWithInt:1] forKey:@"badge"];

    [data setObject:@"bar" forKey:@"foo"];

    [PFPush sendPushDataToChannelInBackground:@"GameChannel2" withData:data];
}

の中に application didFinishLaunchingWithOptionsこの方法でバッジを0に設定しようとしています。

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

アプリケーションアイコンバッジをクリアするにはどうすればよいですか?

54
thar

アプリが再びアクティブになり、まだバックグラウンドにある場合は、-applicationDidBecomeActive: 同様に:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    application.applicationIconBadgeNumber = 0;
}

アプリがまだバックグラウンドで実行されている場合-application:didFinishLaunchingWithOptions:は呼び出されません。

207
Mark

おそらく、-application:didFinishLaunchingWithOptions:は呼び出されていません。これは、アプリがまだバックグラウンドで実行されているためです。アプリをバックグラウンドから起動したときにバッジ数を削除するには、-applicationWillEnterForeground:のバッジ番号もリセットする必要があります。

8
Fabian Kreiser

In SwiftおよびIn AppDelegate

func applicationDidBecomeActive(_ application: UIApplication) {
    application.applicationIconBadgeNumber = 0
}
4
Sourabh Kumbhar

このコードも使用できます。

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    application.applicationIconBadgeNumber = 0;
}

または特定のViewController内

- (void)awakeFromNib {
   [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
2
handiansom

applicationWillResignActiveAppDelegate.m)で呼び出すかもしれません:

-(void)applicationWillResignActive:(UIApplication *)application{
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}

これは、アプリが開いているときにbadgeが来たらPushをクリアするのに役立ちます。ユーザーがnotificationを見て、Home Button(1回または2回)を押すと、それをクリアします。 appclosedである場合もクリアされます(ユーザーが開いた後にクリアされます)。

ここ このメソッドがいつ呼び出されたかを確認できます。

1
S. Matsepura