Firebase尚未在iOS Ionic上初始化

时间:2018-09-02 20:36:27

标签: javascript angular firebase ionic-framework cordova-plugin-fcm

我偶然发现了Ionic,Angular和Firebase应用程序的问题。

我以前曾遇到过这个问题,但它似乎可以解决,现在又遇到了这个问题,我想知道是否有人知道原因。

我正在使用Firebase FCM存储用户的token,然后向他们发送通知。在android上,它可以完美运行,而在iOS上,它可以正常运行。

我从Firebase生成了GoogleService-Info.plist文件,并将其放在我的主文件夹中。

我有以下代码来获取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的{​​{1}}中初始化应用程序,该应用程序一直都有效,并且正如我所说,在android上运行良好。

有人知道为什么这在iOS上不起作用吗?谢谢!

4 个答案:

答案 0 :(得分:1)

  

这是Firebase插件安装版本的问题。

我通过降级为1.0.5来缓解此错误

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

P.S。确保config.xml提到了所需版本的Firebase。这有助于在所有开发系统中保持版本相同。

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

答案 1 :(得分:0)

FCMFirebase Cloud Messaging,几乎不支持可读性(这是Firestore以外的另一种产品)。 CocoaPods可能缺乏相关的依赖性,这可以解释.ts在iOS上不为人所知。将CocoaPods的当前版本与以前的版本进行比较,应该可以看到那里的确切更改(使用版本控制的充分理由)。

请参阅FirebaseFirestore Framework Reference ...这与JavaScript无关。

这是必填项:pods/FirebaseFirestore

答案 2 :(得分:0)

[编辑]

请注意,自cordova-plugin-firebase 2.x版以来,initXXXXX方法已被再次删除。

版本1.1.x已被标记为deprecated

[/ EDIT]


首先,如果您可以提供有关正在使用的库/版本的更多详细信息,将会很有帮助。

我猜您正在将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(...

答案 3 :(得分:0)

问题似乎是Firebase现在开始未初始化,并且需要在代码调用getToken()之前为此目的调用一个函数。

您需要的代码是(<any>window).FirebasePlugin.initFirebase()

我已经能够从cordova firebase插件的github上获取此信息,其他人也遇到相同的问题。由于某种原因,尽管google没找到这个,也许它还是一个太新的问题了

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

相关问题