在 Cordova 中使用 FCM
Using FCM in Cordova
我在 Cordova 项目中使用 FCM。我在 FCM Web 控制台中创建了一个项目,并使用我的项目包名称 com.mycompany.myapp
生成了 google-services.json
文件。我必须将这个文件放在两个地方才能成功编译:android 项目根文件夹和 'CordovaLib' 子文件夹。问题是这两个副本中的每一个都应该指定不同的包名称:项目根文件夹的副本应该指定 com.mycompany.myapp
而 CordovaLib
中的副本应该指定 com.apache.cordova
。否则项目将无法编译。
当我手动修改文件google-services.json
中的包名时,编译成功,但没有发送通知。
我的问题是:如何生成适用于 Cordova 的 google-services.json
文件?我应该在 FCM 控制台中指定什么包名称(com.mycompany.myapp
或 com.mycompany.myapp
)?我可以生成适用于多个包的文件吗?
[编辑]
如果你需要知道,Cordova 项目是从 Sencha ExtJS6 应用程序生成的,我使用 "cordova-plugin-fcm"。在 platforms\android
文件夹中,有一个名为 CordovaLib
的文件夹,其中包含 build.gradle
和 src
。如果我不将 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
放在根目录中。
我在 Cordova 项目中使用 FCM。我在 FCM Web 控制台中创建了一个项目,并使用我的项目包名称 com.mycompany.myapp
生成了 google-services.json
文件。我必须将这个文件放在两个地方才能成功编译:android 项目根文件夹和 'CordovaLib' 子文件夹。问题是这两个副本中的每一个都应该指定不同的包名称:项目根文件夹的副本应该指定 com.mycompany.myapp
而 CordovaLib
中的副本应该指定 com.apache.cordova
。否则项目将无法编译。
当我手动修改文件google-services.json
中的包名时,编译成功,但没有发送通知。
我的问题是:如何生成适用于 Cordova 的 google-services.json
文件?我应该在 FCM 控制台中指定什么包名称(com.mycompany.myapp
或 com.mycompany.myapp
)?我可以生成适用于多个包的文件吗?
[编辑]
如果你需要知道,Cordova 项目是从 Sencha ExtJS6 应用程序生成的,我使用 "cordova-plugin-fcm"。在 platforms\android
文件夹中,有一个名为 CordovaLib
的文件夹,其中包含 build.gradle
和 src
。如果我不将 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
放在根目录中。