En esta aplicación que estoy tratando de hacer, yo uso las notificaciones push. Esta parte funciona bien. Cuando me envíen una notificación de que yo también agregar una insignia en el icono de la aplicación. El problema es cuando hago el almuerzo, la aplicación debería desaparecer de nuevo, pero no lo hace.

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

En el application didFinishLaunchingWithOptions intento establecer insignia de 0 de esta manera:

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

¿Cómo puedo borrar el icono de la aplicación insignia?

InformationsquelleAutor thar | 2012-03-04

5 Comentarios

  1. 207

    Si la aplicación se activa de nuevo y todavía está en el fondo debe restablecer el recuento en -applicationDidBecomeActive: así:

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

    Si su aplicación se sigue ejecutando en segundo plano -application:didFinishLaunchingWithOptions: no será llamado.

    • Gracias de hecho! Entonces hay algo allí tiene sentido 🙂 Obras acaba de encontrar, sólo estoy restablezca en el BecomeActive método. No se por qué debería tenerlo dos veces?
    • Restablecimiento de una vez en el -applicationDidBecomeActive: va a hacer muy bien. Debido a que este método también se llama cuando -application:didFinishLaunchingWithOptions: se llama. Por favor, acepta mi respuesta 🙂
    • ¿No es mejor hacerlo en applicationWillResignActive, justo antes de que el usuario va a ver?
  2. 8

    Probable, -application:didFinishLaunchingWithOptions: no ser llamado, debido a que su aplicación se sigue ejecutando en segundo plano. Con el fin de eliminar la insignia de la cuenta cuando la aplicación se inicia desde el fondo tendrá que restablecer el número de placa en -applicationWillEnterForeground:, demasiado.

    • Gracias Fabian! Su respuesta fue justo lo que necesitaba 🙂 thannnkkss
    • Son -applicationDidBecomeActive y applicationWillEnterForeground: hacer el mismo más o menos? Al hacer el reset en applicationDidBecomeActive. Que trabajo puedo ambas situaciones.
    • -applicaionDidBecomeActive: se invoca cuando la devolución de una llamada de teléfono, también. -applicationWillEnterForeground: es el método apropiado para su situación.
    • applicationWillEnterForeground no será llamado después de la aplicación:didFinishLaunchingWithOptions:, aunque.
    • Sí, por eso tiene que ser reiniciado dos veces. El uso de -applicationDidBecomeActive: y sólo restablecimiento una vez está bien, también.
  3. 4

    Y rápidos En el AppDelegate

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

    Usted puede utilizar estos códigos también.

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

    o En un ViewController

    - (void)awakeFromNib {
       [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    }
    • Este código es parte de la pregunta.
    • ¿Por qué alguien votar en contra de esta respuesta?
  5. 1

    Tal vez llamar en applicationWillResignActive (en AppDelegate.m):

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

    Esto le ayudará a borrar badge si push venir cuando la aplicación está abierta. Usuario ver notification y claro, cuando él prensa Home Button (una o dos veces). También estará claro si app ser closed (claro después de que el usuario lo abre).

    Aquí se puede ver cuando este método se llama.

Dejar respuesta

Please enter your comment!
Please enter your name here