在 Cordova 中使用 FCM

Using FCM in Cordova

我在 Cordova 项目中使用 FCM。我在 FCM Web 控制台中创建了一个项目,并使用我的项目包名称 com.mycompany.myapp 生成了 google-services.json 文件。我必须将这个文件放在两个地方才能成功编译:android 项目根文件夹和 'CordovaLib' 子文件夹。问题是这两个副本中的每一个都应该指定不同的包名称:项目根文件夹的副本应该指定 com.mycompany.myappCordovaLib 中的副本应该指定 com.apache.cordova。否则项目将无法编译。

当我手动修改文件google-services.json中的包名时,编译成功,但没有发送通知。

我的问题是:如何生成适用于 Cordova 的 google-services.json 文件?我应该在 FCM 控制台中指定什么包名称(com.mycompany.myappcom.mycompany.myapp)?我可以生成适用于多个包的文件吗?

[编辑]

如果你需要知道,Cordova 项目是从 Sencha ExtJS6 应用程序生成的,我使用 "cordova-plugin-fcm"。在 platforms\android 文件夹中,有一个名为 CordovaLib 的文件夹,其中包含 build.gradlesrc。如果我不将 google-services.json 复制到此位置,项目将不会编译。 src 文件夹中的 类 包名称为 com.apache.cordova.

正如对问题的评论所建议的那样,解决方案是仅将 google-services.json 放在项目的根目录中。我会解释为什么我有这个问题,这样其他人就不会犯同样的错误。

当您在 Firebase 控制台中创建项目和应用程序时,您会收到一个 window 和以下说明:

Add Firebase to your Android app

The Google services plugin for Gradle loads the google-services.json file you just downloaded. Modify your build.gradle files to use the plugin.

1 - Project-level build.gradle (<project\>/build.gradle):

buildscript {

dependencies {

// Add this line

classpath 'com.google.gms:google-services:3.0.0'

}

}

2 - App-level build.gradle (<project>/<app-module>/build.gradle):

...

// Add to the bottom of the file

apply plugin: 'com.google.gms.google-services'

所以,我在 build.gradle 文件的子文件夹 CordovaLib 中添加了 apply plugin ... 行(这是错误的,它应该放在同一个 build.gradle文件在项目根文件夹中),除非我在该文件夹中添加 google-services.json 否则它不会编译。所以,错误的根源是不假思索地按照上面的说明去做。

结论:在Cordova 生成的Android 应用程序中,将两个修改都放在项目根目录下的build.gradle 文件中,而只将google-services.json 放在根目录中。