Ne pas recevoir de notifications push avec Firebase et Objective C

J'essaie d'utiliser Firebase pour la notification push. J'ai installé avec succès la Firebase messaging Firebase et Firebase messaging via Cocoapods .

J'ai utilisé le code ci-dessous

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [FIRApp configure]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshCallback:) name:kFIRInstanceIDTokenRefreshNotification object:nil]; UIUserNotificationType allNotificationsType = (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge); UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:allNotificationsType categories:nil]; [application registerUserNotificationSettings:settings]; [application isRegisteredForRemoteNotifications]; return YES; } -(void)applicationDidEnterBackground:(UIApplication *)application { [[FIRMessaging messaging] disconnect]; NSLog(@"Disconnect from FCM"); } - (void)applicationDidBecomeActive:(UIApplication *)application { [self connectToFirebase]; } - (void) application:(UIApplication *) application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:( void (^)(UIBackgroundFetchResult))completionHandler{ // Pring The Message Id NSLog(@"Mesage Id : %@",userInfo[@"gcm.message_id"]); // Print Full Message NSLog(@"%@",userInfo); } #pragma mark -- Custom Firebase code - (void)tokenRefreshCallback:(NSNotification *) notification{ NSSsortingng *refreshedToken = [[FIRInstanceID instanceID] token]; NSLog(@"IstanceID token: %@", refreshedToken); // Connect To FCM since connection may have failed when attempt before having a token [self connectToFirebase]; } -(void) connectToFirebase{ [[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error) { if ( error != nil) { NSLog(@"Unable to Connect To FCM. %@",error); } else { NSLog((@"Connected To FCM")); } }]; } 

Lorsque je cours le code ci-dessus en utilisant mon iPhone connecté avec Xcode je suis confronté aux problèmes suivants lorsque j'envoie un message de la Firebase Console

1). lorsque l'application est en avant-plan (active), Log affiche le message ci-dessous

 Mesage Id : (null){ CustommData = "First Message"; "collapse_key" = "abcd.iospush.FireBasePush"; from = 555551391562; notification = { badge = 4; body = "Test Message"; e = 1; sound = default; sound2 = default; }; } 

L' Message Id notification est null .

2). Mon téléphone n'affiche aucune notification dans le Centre de notifications indiquant si l'application est au premier plan, en arrière-plan ou fermée

Je souhaite que l'user reçoive des notifications push lorsque l'application est en arrière-plan, en premier plan ou fermée

Vous devez appeler [[UIApplication sharedApplication] registerForRemoteNotifications]; pour vous inscrire correctement pour les notifications à distance.

Configuration des notifications à distance pour l'utilisation en arrière-plan

Avez-vous configuré les modes d'arrière-plan de votre application pour accepter les notifications à distance? Vous pouvez le faire en cliquant sur: Nom du projet -> Capacités -> Modes d'arrière-plan

Activez-le, puis cochez la case à côté de Notifications à distance, comme illustré dans la capture d'écran ci-dessous.

entrez la description de l'image ici

Vous devriez appeler (iOS 8+) registerForRemoteNotifications , et non isRegisteredForRemoteNotifications .

Sinon, vous ne recevrez jamais de messages "haute priorité" du server Firebase, fournis nativement en utilisant APNS.

Veuillez noter que lorsque vous utilisez XCode, vous utilisez le mode bac à sable, alors assurez-vous de vous inscrire avec les parameters appropriés.

Essayez de l'envoyer en "haute priorité" et voyez si votre charge utile est dans le bon format APNS:

 { "aps" : { "alert" : "You got your emails.", "badge" : 9, "sound" : "bingbong.aiff" }, } 

Notez que votre charge utile peut avoir = au lieu de : ce qui est acceptable.

Vous devez créer un ID d'application dans votre count de développeur sur lequel l'autorisation de notification push est activée. Heureusement, Xcode a un moyen simple de le faire. Allez dans Paramètres de l'application -> Capacités et basculez le button pour activer les notifications Push. Après un chargement, cela devrait ressembler à ça: notifications push entrez la description de l'image ici

Vérifiez également que le certificate p12 est défini pour Firebase car il utilise le certificate .p12 pour les notifications push.