web-dev-qa-db-fra.com

Firebase quand recevoir Notification Push n'a pas reçu le popup

import Firebase
import FirebaseInstanceID
import FirebaseMessaging
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    registerForPushNotifications(application)
    FIRApp.configure()

    // Add observer for InstanceID token refresh callback.
    NSNotificationCenter
     .defaultCenter()
     .addObserver(self, selector: #selector(AppDelegate.tokenRefreshNotificaiton),
                                                     name: kFIRInstanceIDTokenRefreshNotification, object: nil)

    // Override point for customization after application launch.
    return true
  }

func registerForPushNotifications(application: UIApplication) {
      let settings: UIUserNotificationSettings =
        UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
      application.registerUserNotificationSettings(settings)
      application.registerForRemoteNotifications()
  }


  func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
                   fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
    print("===== didReceiveRemoteNotification ===== %@", userInfo)
  }


 func tokenRefreshNotificaiton(notification: NSNotification) {
    let refreshedToken = FIRInstanceID.instanceID().token()!
    print("InstanceID token: \(refreshedToken)")

    // Connect to FCM since connection may have failed when attempted before having a token.
     connectToFcm()
  }

  func connectToFcm() {
    FIRMessaging.messaging().connectWithCompletion { (error) in
      if (error != nil) {
        print("Unable to connect with FCM. \(error)")
      } else {
        print("Connected to FCM.")
      }
    }
  }

Aussi à faire dans Info.plist FirebaseAppDelegateProxyEnabled = NO

Je ne sais pas pour le moment mais j'ai eu l'impression (...) dans didReceiveRemoteNotification mais ne recevez pas le popup. J'envoie le message de Firebase -> Console -> Notification -> Appareil unique et copie ici le jeton que j'ai reçu de xCode Console -> func tokenRefreshNotificaiton

Obtenez le prochain dans la console, mais ne recevez pas de popup

<FIRAnalytics/INFO> Firebase Analytics enabled
InstanceID token: TOKEN_ID
Connected to FCM.
===== didReceiveRemoteNotification ===== %@ [notification: {
    body = test;
    e = 1;
}, collapse_key: com.pf.app, from: 178653764278]

Aussi les configurations d'applications  enter image description here

15
Svitlana

définir le code suivant dans AppDelegate.m

   - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    // for development 
        [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox];

    // for production 
   //     [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd];


    }
11
Ala'a AbuNemeh

Je suppose que votre application est au premier plan lors des tests. Lorsque votre application est au premier plan, aucune notification visible n'est déclenchée. À la place, vous recevez le rappel à didReceiveRemoteNotification. Voir la documentation pour plus d'informations.

Pour vérifier, mettez votre application en arrière-plan et essayez à nouveau d'envoyer la notification Push.

1
AdamK

Utilisez simplement cette fonction dans le sandbox de délégué de votre application pour le développement de la production.

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

    FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.sandbox)

    FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.prod)
}
0
gowtham

Commencez par vérifier auprès de Firebase Notification Console pour savoir si la notification est en cours d’envoi ou non. Si c'est un succès, alors le problème est du côté du code; sinon, vérifiez quelle erreur arrive dans Firebase. Si vous recevez un message d'erreur signalant l'absence d'APN, vous devez vérifier le fichier .p12 de développement/production dans l'onglet Configuration du projet -> Messagerie en nuage.

0

J'ai la même configuration que vous et cela fonctionne comme AdamK l'a dit. (En mode arrière-plan, une notification apparaît.) Vérifiez également vos certificats.

0
wseries