Ошибка неверной регистрации FCM в сборке выпуска ios - PullRequest
1 голос
/ 30 апреля 2019

Я столкнулся со странной проблемой в push-уведомлении ios firebase. Я получаю уведомление на устройстве всякий раз, когда я запускаю приложение из XCode или даже когда я создаю архив, я успешно получаю уведомления.

Но когда я запускаю сборку релиза на устройстве или загружаю в магазин приложений push-уведомления, у меня не работает, и я получаю сообщение об ошибке ниже

Сертификаты для разработки и производства загружены и действительны.

{
    "multicast_id": 6319718121948146737,
    "success": 0,
    "failure": 1,
    "canonical_ids": 0,
    "results": [
        {
            "error": "InvalidRegistration"
        }
    ]
}

второй раз, когда я вызываю API с таким же токеном, тогда вместо InvalidRegistration я получаю NotRegistered error

Вот так я генерирую токен fcm

func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
        print("Firebase registration token: \(fcmToken)")
    }

  func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        // Pass device token to auth

        #if DEVELOPMENT
        Auth.auth().setAPNSToken(deviceToken, type: .sandbox)
        Messaging.messaging().setAPNSToken(deviceToken, type: .sandbox)
        #else
        Auth.auth().setAPNSToken(deviceToken, type: .prod)
        Messaging.messaging().setAPNSToken(deviceToken, type: .prod)
        #endif

        Messaging.messaging().apnsToken = deviceToken
        Messaging.messaging().shouldEstablishDirectChannel = true


        //tried this 
        let token = Messaging.messaging().fcmToken
        print("Firebase registration token: \(token)")

        //tried this also both are giving same token but none of them is 
        //working in release build
        let refreshedToken = InstanceID.instanceID().token()
        print("InstanceID token: \(refreshedToken)")


    }

1 Ответ

0 голосов
/ 14 мая 2019

Наконец, я решил эту проблему, удалив эту часть из моего кода

 #if DEVELOPMENT
 Auth.auth().setAPNSToken(deviceToken, type: .sandbox        
 Messaging.messaging().setAPNSToken(deviceToken, type: .sandbox)
 #else
 Auth.auth().setAPNSToken(deviceToken, type: .prod)
 Messaging.messaging().setAPNSToken(deviceToken, type: .prod)
 #endif
...