使用cordova-plugin-fcm通过PhoneGap Build构建Firebase推送通知

时间:2016-09-28 18:12:46

标签: firebase push-notification cordova-plugins phonegap-build firebase-cloud-messaging

我需要在我正在开发的PhoneGap Build应用中实现推送通知。

我没有找到关于使用新的Google服务Firebase云消息传递(FCM)的文档,但由于它应该是我们现在必须使用的内容,因此我搜索了一个可以让我的生活更轻松的API。 / p>

我找到了:https://www.npmjs.com/package/cordova-plugin-firebase

所以我添加到我的config.xml:

<plugin name="cordova-plugin-fcm" source="npm" />

将我从https://console.firebase.google.com/创建的google-services.json放在我上传到Phonegap Build的文件夹的根目录中。

但是我收到以下错误:

Execution failed for task ':processReleaseGoogleServices'.
> File google-services.json is missing. The Google Services Plugin cannot function without it. 
  Searched Location: 
  /project/src/release/google-services.json
  /project/google-services.json

我在根目录中创建了“project”文件夹并将文件放在那里,但这两个文件都不起作用。

目前我的app文件夹如下所示:

\css
\img
\js
\res (icons and splashscreens)
index.html
config.xml
google-services.json

如果有人知道我要放置该文件的位置,或者使用其他API有任何其他方式来实现它,我会非常感激。 我从未使用过Phonegap CLI,我一直在使用Phonegap Build。

3 个答案:

答案 0 :(得分:9)

Cordova不久前推出了resource-file标签,它也适用于Phonegap Build。

您可以使用它而不是分叉插件来复制google-services.jsonGoogleService-Info.plist文件

放入项目的根目录,并使用config.xml中的resource-file标记,如下所示:

如果使用cordova-android 7或更新版本:

<platform name="android">
  <resource-file src="google-services.json" target="app/google-services.json" />
</platform>

旧版本

<platform name="android">
  <resource-file src="google-services.json" target="google-services.json" />
</platform>

的iOS

<platform name="ios">
  <resource-file src="GoogleService-Info.plist" />
</platform>

您也可以将其放在www文件夹中,在我的示例中,在www/字段中的文件名之前添加src

https://cordova.apache.org/docs/en/7.x/config_ref/index.html#resource-file

答案 1 :(得分:8)

文件需要与www文件夹一起使用,问题是Phonegap Build只允许您上传所述文件夹的内容,因此您无法上传文件。

幸运的是,你可以做些什么; Build直接从npm安装插件,插件可以考虑整个项目,所以你需要的是一个为你复制文件[google-services.jsonGoogleService-Info.plist]的插件。

大部分工作已经完成:cordova-plugin-fcm-config

  

此插件在项目根文件夹和Xcode项目中复制所需的FCM配置。它与伟大的cordova-plugin-fcm插件结合使用。

它并没有为此目的而建造,但效果非常好。

虽然增加了复杂性;因为您无法上传插件(您只能在config.xml中添加对该插件的引用),并且此插件需要您自己的应用配置文件,您必须:

  1. 将插件克隆/分叉到您自己的存储库中。
  2. 替换配置文件。
  3. 将其上传到Build可以找到的地方。
  4. 你在哪里上传它?这可能很棘手。基础架构是基于插件用于一般目的的想法,并且可以在每个项目xml中配置,因此npm是有意义的。但在这种情况下,您的插件将包含非常具体的数据到您的项目,因此上传到npm会污染我认为的命名空间。

    我不了解您,但我有一个付费帐户,因此我将该插件发布到我自己的存储库中并作为私有插件提交。这就是我的建议。

答案 2 :(得分:0)

对我来说,我必须进入.xcodeproj文件,并将主界面从MainViewController.xib更改为CDVLaunchScreen.storyboard

重建并成功。我的应用是使用Ionic构建的,我是在Ionic Creator中启动的。