Firebase не инициализируется на iOS Ionic

Я наткнулся на проблему с моим приложением Ionic, Angular и Firebase.

Раньше у меня была эта проблема, но она, казалось, сработала сама собой, и теперь у меня это снова, и мне интересно, знает ли кто-нибудь почему.

Я использую Firebase FCM для хранения пользователя token чтобы затем отправить им уведомление. На андроиде это работает отлично, а на iOS раньше работало..

Я создал свой GoogleService-Info.plist файл из Firebase и положить его в мою основную папку.

У меня есть следующий код, чтобы получить fcm маркер:

 getFCMToken() {
    let token;
    this.firebaseNative.getToken().then((tok) => {
        token = tok;
        if(this.platform.is('ios')) {
          this.firebaseNative.grantPermission().then((tok) => {
            return this.fcmToFirestore(token);
          }).catch(error => this.showToast("There was an error: " + error));
        } else {
          return this.fcmToFirestore(token);
        }
    }).catch(error => {
        this.showToast("There was an error: " + error)
    });
  }

  fcmToFirestore(token) {
    if (!token) return;

    const devicesRef = this.afs.collection('devices')
    const docData = {
      token,
      userId: this.userData.uid,
    }
    return devicesRef.doc(token).set(docData);
  }

Когда я запускаю следующий код на iPhone, я получаю тостовое сообщение:

Произошла ошибка: Firebase не инициализирован

Я инициализирую приложение в app.module.ts в imports, который всегда работал, и, как я уже сказал, прекрасно работает на Android.

Есть идеи, почему это не работает на iOS? Спасибо!

4 ответа

Решение

Это проблема с установленной версией плагина firebase.

Я уменьшил эту ошибку, опустив версию до 1.0.5

cordova plugin remove cordova-plugin-firebase
cordova plugin add cordova-plugin-firebase@1.0.5 --save 

PS Обязательно config.xml упоминается firebase с требуемой версией. Это помогает сохранять одинаковые версии во всех системах разработки.

<plugin name="cordova-plugin-firebase" spec="~1.0.5" />

[РЕДАКТИРОВАТЬ]

Обратите внимание, что с cordova-plugin-firebase версия 2.x initXXXXXМетоды были удалены снова.

И версия 1.1.x была помечена как deprecated,

[/РЕДАКТИРОВАТЬ]


Во-первых, было бы полезно, если бы вы могли предоставить более подробную информацию о библиотеках / версиях, которые вы используете.

Я полагаю, вы используете cordova-plugin-firebase версия 1.1.x в сочетании с @ionic-native/firebase (?)

Похоже на то, cordova-plugin-firebase имеет несколько новых методов инициализации, которые должны быть явно вызваны сейчас, прежде чем вы сможете использовать службы Firebase.

а именно

FirebasePlugin.initFirebase(success, error)

FirebasePlugin.initAnalytics(success, error)
FirebasePlugin.initCrashlytics(success, error)
FirebasePlugin.initPerformance(success, error)
FirebasePlugin.initRemoteConfig(success, error)

Обратите внимание, что последняя версия @ionic-native/firebase на данный момент (v4.12.2) эти функции еще не интегрированы.

Поэтому для использования их в приложении Ionic вам может понадобиться доступ к "сырым" FirebasePlugin сам экземпляр как

declare var FirebasePlugin;
// ...
this.platform.ready().then(() => {
  FirebasePlugin.initFirebase(...

FCM является Firebase Cloud Messaging, который едва поддерживает читабельность (это совсем другой продукт, чем Firestore). CocoaPods может отсутствовать соответствующая зависимость, которая объясняет, что она не известна .ts на iOS. сравнивая текущую версию CocoaPods с предыдущей версией должно показываться, что именно там изменилось (веская причина использовать контроль версий).

посмотрите Ссылку Платформы FirebaseFirestore... это не имеет никакого отношения к JavaScript.

это было бы то, что требуется: https://cocoapods.org/pods/FirebaseFirestore.

Похоже, проблема в том, что Firebase теперь запускается неинициализированным и требует, чтобы для этой цели была вызвана функция, прежде чем ваш код вызовет getToken().

Вам нужно немного кода (<any>window).FirebasePlugin.initFirebase()

Я смог получить эту информацию из GitHub плагина Cordova Firebase, где у других людей была такая же проблема. По какой-то причине, хотя Google не нашел это, возможно, это слишком новая проблема до сих пор

https://github.com/arnesson/cordova-plugin-firebase/issues/816

Другие вопросы по тегам