4 votes

Firebase/InAppMessaging erreur s'affiche dans la console Xcode

pod 'Firebase/Database'
pod 'Firebase/InAppMessagingDisplay'
pod 'Firebase/Messaging'

Pourquoi cette erreur? J'ai lu le document et configuré le code et le projet correctement, mais lorsque j'envoie InAppMessaging depuis le tableau de bord firebase et que j'ouvre l'application, j'obtiens cette erreur.

[Firebase/InAppMessaging][I-IAM130004] Échec de la requête API restful pour récupérer les messages in-app: code d'état http 400 avec le corps {
  "error": {
    "code": 400,
    "message": "La requête contient un argument invalide.",
    "status": "INVALID_ARGUMENT"
  }

[Firebase/InAppMessaging][I-IAM700002] Une erreur s'est produite lors de la récupération des messages Erreur Domain=NSURLErrorDomain Code=400 "(null)"

0 votes

J'ai le même problème. Avez-vous réussi à le résoudre?

0 votes

Oui mon problème a été résolu en ajoutant le pod étape 1 - #pod 'Firebase/InAppMessagingDisplay' étape 2 - Pod installer étape 3 - configurer firebase par le code Messaging.messaging (). shouldEstablishDirectChannel = vrai étape 3 - Supprimer l'application de l'iPhone et réinstaller - envoyer le jeton APNS à firebase

0voto

Deepak Points 68

Il y a 2-3 raisons derrière cela.

  • Firebase n'est pas configuré / initialisé à didFinishLaunchingWithOptions
  • Le jeton FCM expire ou est invalide et l'observateur du jeton de rafraîchissement n'est pas ajouté
  • Utilisation d'un GoogleService-Info.plist invalide/différent c'est-à-dire si vous utilisez 2 GoogleService-Info.plist dans le même projet pour le développement et la production. Assurez-vous donc que, au moment de l'installation de l'application, le bon GoogleService-Info.plist est pris en compte

pod 'Firebase/Messaging'

si vous utilisez également InAppMessagingDisplay, installez également ce pod

pod 'Firebase/InAppMessagingDisplay'

initialisation de Firebase à didFinishLaunchingWithOptions

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    window = UIWindow(frame: CGRect(x: 0, y: 0, width: kDeviceWidth, height: kDeviceHeight))

    FirebaseApp.configure()
    NotificationCenter.default.addObserver(self, selector: #selector(tokenRefreshNotification), name: NSNotification.Name.InstanceIDTokenRefresh, object: nil)
    Messaging.messaging().delegate = self
    Messaging.messaging().shouldEstablishDirectChannel = true

    UNUserNotificationCenter.current().delegate = self

    if #available(iOS 10.0, *) {

        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions,
            completionHandler: {_, _ in })
    } else {
        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }

    application.registerForRemoteNotifications()
}
// [START refresh_token]
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {

 //Vous sauvegardez ou envoyez le jeton FCM à votre serveur
}

//+++++++++++++++++++++++
// Le jeton FCM est rafraîchi
@objc func tokenRefreshNotification(_ notification: Notification) {
    getFCMToken()
}
private func getFCMToken() {

    InstanceID.instanceID().instanceID { (result, error) in

        if error == nil {

            if let result = result {
                let fcmToken = result.token
                //Sauvegardez ou envoyez à votre serveur
            }
        }
    }
}

0 votes

Mais en ajoutant shouldEstablishDirectChannel change le comportement de votre application recevant les messages de firebase firebase.google.com/docs/reference/ios/firebasemessaging/api‌​/…

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X