Firebase推送通知,使用cordova插件fcm构建PhoneGap

Firebase推送通知,使用cordova插件fcm构建PhoneGap,firebase,push-notification,cordova-plugins,phonegap-build,firebase-cloud-messaging,Firebase,Push Notification,Cordova Plugins,Phonegap Build,Firebase Cloud Messaging,我需要在我正在开发的PhoneGap构建应用程序中实现推送通知 我没有找到太多关于使用新的谷歌服务Firebase Cloud Messaging(FCM)的文档,但因为它应该是我们现在必须使用的,所以我搜索了一个API,它可以让我的生活更轻松 我发现: 因此,我在config.xml中添加了: <plugin name="cordova-plugin-fcm" source="npm" /> 我在根目录中创建了“project”文件夹并将文件放在那里,但这也不起作用 当前我的应用

我需要在我正在开发的PhoneGap构建应用程序中实现推送通知

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

我发现:

因此,我在config.xml中添加了:

<plugin name="cordova-plugin-fcm" source="npm" />
我在根目录中创建了“project”文件夹并将文件放在那里,但这也不起作用

当前我的应用程序文件夹看起来像:

\css
\img
\js
\res (icons and splashscreens)
index.html
config.xml
google-services.json
如果有人知道我要把那个文件放在哪里,或者有任何其他方法来实现这个,即使使用其他API,我也会非常感激。
我从未使用过Phonegap CLI,我一直在使用Phonegap Build。

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

幸运的是,你可以做一些事情;Build直接从npm安装插件,插件可以在整个项目中工作,因此您需要的是一个为您复制文件[
google services.json
GoogleService Info.plist
]的插件

大部分工作已经完成:

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

它不是为了这个目的而建造的,但它的工作非常出色

不过,这增加了复杂性;由于您无法上载插件(您只能在
config.xml
中添加对它的引用),并且该插件需要您自己的应用程序配置文件,因此您必须:

  • 将插件克隆/分叉到您自己的存储库中
  • 替换配置文件
  • 上传到Build可以找到的地方
  • 你在哪里上传?这可能很棘手。该基础设施是围绕插件用于一般用途的思想构建的,并且可以在每个项目xml中配置插件,因此npm是有意义的。但在这种情况下,你的插件将包含非常具体的项目数据,因此在我看来,上传到npm会污染名称空间


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

    Cordova不久前引入了
    资源文件
    标记,它也适用于Phonegap构建

    您可以使用它而不是分叉插件来复制
    googleservices.json
    GoogleService Info.plist
    文件

    将标记放在项目的根目录中,并使用config.xml中的
    资源文件
    标记,如下所示:

    如果使用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

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


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


    重建成功了。我的应用程序是用Ionic构建的,我是在Ionic Creator中启动的。

    非常感谢,这非常有效!好吧,至少我能够编译它,现在我必须看看cordova插件fcm插件是否真的有效。非常感谢你!仅供参考,您还可以免费克隆项目并将其托管在bitbucket中的个人存储库中。然后用“谢谢”来回答这个问题。两个后续问题:1)为什么cordova插件fcm不包括复制功能?2) 有没有办法以同样的方式解决配置文件问题(从www文件夹中复制)?谢谢@Guy,这是一个非常好的技巧。也许值得一个完整的答案?
    <platform name="android">
      <resource-file src="google-services.json" target="google-services.json" />
    </platform>
    
    <platform name="ios">
      <resource-file src="GoogleService-Info.plist" />
    </platform>