代码之家  ›  专栏  ›  技术社区  ›  Simon

Firebase没有在iOS上初始化

  •  2
  • Simon  · 技术社区  · 6 年前

    我偶然发现了我的离子,角度和火基应用程序的问题。

    我正在使用Firebase FCM存储用户的 token

    我生成了我的 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上运行以下代码时,会得到toast消息:

    出现错误:Firebase未初始化

    app.module.ts imports ,它一直有效,正如我所说的,在android上运行良好。

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

    4 回复  |  直到 6 年前
        1
  •  1
  •   nkshio    6 年前

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

    我通过降级到1.0.5减轻了这个错误

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

    注意,确保 config.xml 已提到firebase的所需版本。这有助于在所有开发系统中保持版本相同。

    <plugin name="cordova-plugin-firebase" spec="~1.0.5" />
    
        2
  •  0
  •   Martin Zeitler    6 年前

    FCM Firebase Cloud Messaging Firestore CocoaPods 可能缺乏相关的依赖性,这就解释了 .ts 在iOS上。比较当前版本的 与以前的版本应该显示什么确切地改变了那里(一个很好的理由使用版本控制)。

    看到了吗 FirebaseFirestore Framework Reference

    这将是一个必要的: pods/FirebaseFirestore .

        3
  •  0
  •   FabTheZen    6 年前

    问题似乎是Firebase现在未初始化就启动了,在代码调用getToken()之前,需要为此调用一个函数。

    (<any>window).FirebasePlugin.initFirebase()

    我已经能够从cordova firebase插件的github获得这些信息,其他人也有同样的问题。出于某种原因,尽管google没有发现这个问题,但也许这个问题还是太新了

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

        4
  •  0
  •   russa    6 年前

    [编辑]

    cordova-plugin-firebase 版本2.x initXXXXX -方法再次被删除。

    版本1.1.x被标记为 deprecated .

    [/编辑]


    首先,如果您能提供一些您正在使用的库/版本的详细信息,这会很有帮助。

    我猜你在用 cordova插件firebase 版本1.1.x与 @ionic-native/firebase (?)

    看来, cordova插件firebase 在使用firebase服务之前,需要显式调用一些新的初始化方法。

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

    请注意,最新版本的 到目前为止(v4.12.2)还没有集成这些功能。

    FirebasePlugin 实例本身就像

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