web-dev-qa-db-fra.com

Supprimer un badge de l'icône de l'application iOS

Dans cette application que j'essaie de créer, j'utilise les notifications Push. Cette partie fonctionne très bien. Lorsque j'envoie une notification, j'ajoute également un badge à l'icône de l'application. Le problème est que lorsque je déjeune l'application, elle devrait à nouveau disparaître, mais ce n'est pas le cas.

-(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];
}

Dans le application didFinishLaunchingWithOptions, j'essaie de régler le badge sur 0 de la manière suivante:

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

Comment puis-je effacer le badge d'icône d'application?

54
thar

Si votre application redevient active et reste en arrière-plan, vous devez également réinitialiser le nombre de badges dans -applicationDidBecomeActive::

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

Si votre application est toujours en cours d'exécution en arrière-plan, -application:didFinishLaunchingWithOptions: ne sera pas appelé.

205
Mark

Probablement, -application:didFinishLaunchingWithOptions: n'est pas appelé, car votre application est toujours en cours d'exécution en arrière-plan. Pour supprimer le nombre de badges lorsque l'application est lancée à partir de l'arrière-plan, vous devez également réinitialiser le numéro de badges en -applicationWillEnterForeground:.

8
Fabian Kreiser

Vous pouvez également utiliser ces codes.

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

ou dans un ViewController spécifique

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

Peut-être l'appeller dans applicationWillResignActive (dans AppDelegate.m):

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

Cela vous aidera à effacer badge si Push arrive lorsque l'application est ouverte. L'utilisateur voit notification et vous l'effacez lorsqu'il appuie sur Home Button (une ou deux fois). En outre, il sera clair si app est closed (efface après que l'utilisateur l'ait ouvert).

Ici vous pouvez voir quand cette méthode a appelé. 

2
S. Matsepura

Dans Swift et dans AppDelegate

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