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

相關問題