Les notifications à distance Google Firebase ne s'affichent pas lorsque l'application s'exécute en arrière-plan

J'utilise Google Firebase pour envoyer des notifications aux users. Au moment où je suis en train d'envoyer une notification à un seul appareil (le mien).

Avoir un problème avec la réception de notifications – alors que mon application est en cours d'exécution dans la bannière d'arrière-plan n'apparaît pas. Mais si j'ouvre mon application, la méthode didReceiveRemoteNotification: triggers ma vue d'alerte:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:userInfo[@"notification"][@"body"] message:@"More info..." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Open",nil]; [alert show]; } 

Mais comme il est écrit dans la documentation de Google Firebase, cette méthode se triggers après l'ouverture de l'application, donc cela a du sens.

Donc, un message est envoyé à mon appareil, je ne peux pas triggersr une bannière de notification si l'application est en arrière-plan.

Je lis à propos de la définition de la priorité des messages à haute et le contenu de la key de données personnalisée-disponible à 1, mais pas de chance.

Est-ce que je manque quelque chose d'autre dans mon code pour triggersr une notification? Je l'ai fait avec Google Firebase Guide pour implémenter les notifications.

J'ai résolu mon problème. J'ai commencé à lire de nouveau la documentation sur Google Firebase et sous Cloud Messaging, j'ai trouvé ceci:

Indiquez le jeton APN et le type de jeton dans setAPNSToken: type :. Assurez-vous que la valeur de type est correctement définie: FIRInstanceIDAPNSTokenTypeSandbox pour l'environnement sandbox ou FIRInstanceIDAPNSTokenTypeProd pour l'environnement de production. Si vous ne définissez pas le type correct, les messages ne sont pas envoyés à votre application.

J'ai donc manqué de mettre cette instruction dans la méthode: didRegisterForRemoteNotificationsWithDeviceToken:

  - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox]; } 

Ne pas oublier de mettre type: "FIRInstanceIDAPNSTokenTypeProd" pour la production.