9

我需要在我正在开发的PhoneGap生成应用程序中实现推送通知。Firebase推送通知与PhoneGap生成使用科尔多瓦插件-Fcm

我没有找到有关使用新的Google服务Firebase Cloud Messaging(FCM)的文档,但由于它应该是我们现在必须使用的,我搜索了一个可以使我的生活更轻松的API。

我发现:https://www.npmjs.com/package/cordova-plugin-firebase

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

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

并把谷歌与services.json我从https://console.firebase.google.com/创造了我的压缩文件夹的根上传到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 

我创建的根“项目”文件夹,把该文件存在,但不工作也没有。

目前我的app文件夹的样子:

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

如果有谁知道在那里我已经把那个文件或必须实现这个任何其他方式,甚至使用其他的API,我真的很感激它。 我从来没有使用过Phonegap CLI,我一直在使用Phonegap Build。

回答

8

这些文件需要放在www文件夹旁边,问题在于Phonegap Build只允许您上传所述文件夹的内容,因此您无法上传文件。

幸运的是你可以做的事情; Build从npm直接安装插件,并且插件可以认为整个项目,所以你需要的是一个插件,为你复制文件[google-services.json,GoogleService-Info.plist]。

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

This plugin copies the required FCM configurations in the project root folders and Xcode project. It is used in combination with the great cordova-plugin-fcm plugin.

它不是为此目的而构建的,但奇妙地工作。

虽然增加了复杂性;因为你不能上传插件(你只能在你的​​3210添加到它的引用),这个插件需要自己的应用程序的配置文件,你必须:

  1. 克隆/叉插件到您的自己的仓库。
  2. 替换配置文件。
  3. 将它上传到某个地方生成可以找到。

你在哪里上传它?这可能会很棘手。基础设施的构建围绕着这样的想法:插件是用于一般目的的,并且可以在每个项目xml中进行配置,因此npm是有意义的。但在这种情况下,你的插件将包含非常具体的数据到你的项目,所以上传到npm会污染我认为的命名空间。

我不知道你,但我有一个付费帐户,所以我发布插件在我自己的存储库,并提交作为一个私人插件。这是我推荐的。

+0

非常感谢,这工作完美!那么,至少我能够编译它,现在我必须看看cordova-plugin-fcm插件是否可以正常工作。非常感谢你! –

+4

仅供参考,您也可以克隆该项目并将其托管在个人存储库中的免费bitbucket中。然后在配置文件中使用 Guy

+1

Thanks for这个答案。两个后续步骤:1)为什么cordova-plugin-fcm不包含复制功能? 2)有没有办法以相同的方式解决配置文件问题(以某种方式从www文件夹中复制)? – Yaron

4

科尔多瓦前段时间推出了resource-file标签,它也适用于Phonegap Build。

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

把你的项目的根和使用在config.xml这样的resource-file标签:

如果使用科尔多瓦 - 机器人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文件夹内,在这种情况下,在我的例子中src字段中指定文件名前添加www/

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

相关问题