Firebase Push-уведомления с помощью сборки PhoneGap с использованием cordova-plugin-fcm

мне нужно реализовать push-уведомления в приложении сборки PhoneGap, которое я разрабатываю.

Я не нашел много документации по использованию нового сервиса Google, Firebase Cloud Messaging (FCM), но поскольку это должно быть то, что мы должны использовать сейчас, я искал API, который мог бы облегчить мою жизнь.

Я нашел:https://www.npmjs.com/package/cordova-plugin-firebase

поэтому я добавил в свою конфигурацию.XML-код:

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

и поставить сервис Google.json я создал изhttps://console.firebase.google.com/ в корне папки я zip для загрузки в сборку Phonegap.

но я получаю следующую ошибку:

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

Я создал папку "проект" в корне и поместил файл туда, но это тоже не работает.

В настоящее время моя папка приложения выглядит так:

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

Если кто знает, где я должен поместить этот файл или есть другой способ реализовать это даже используя другой API, я был бы очень признателен. Я никогда не использовал Phonegap CLI, я всегда использовал PhoneGap Build.

2 ответов


файлы должны быть рядом с www папка, проблема в том, что сборка Phonegap позволяет загружать только содержимое указанной папки, поэтому вы не можете загружать файлы.

к счастью, есть что-то, что вы можете сделать; Build устанавливает Плагины непосредственно из npm, и плагины могут работать над всем проектом, поэтому вам нужен плагин, который копирует файлы [google-services.json, GoogleService-Info.plist] для вас.

большая часть работы уже выполнена: cordova-plugin-fcm-config.

этот плагин копирует необходимые конфигурации FCM в корневых папках проекта и проекте Xcode. Он используется в сочетании с отличным плагином cordova-plugin-FCM.

Он не был построен для этой цели, но работает отменно.

есть дополнительная сложность; так как вы не можете загружать плагины (вы можете добавить только ссылку на него в свой config.xml), и этот плагин нуждается в вашем собственном приложении файлы конфигурации, вам придется:

  1. Clone / Fork плагин в свой собственный репозиторий.
  2. замените файлы конфигурации.
  3. загрузить его где-то можно найти.

где вы загружаете его? Это может быть сложно. Инфраструктура построена вокруг идеи, что плагины предназначены для общих целей и могут быть настроены в каждом XML-файле проекта, поэтому npm имеет смысл. Но в этом случае ваш плагин будет содержать очень конкретные данные для вашего проекта, поэтому загрузка в npm загрязнила бы пространство имен, на мой взгляд.

Я не знаю о вас, но у меня есть платный аккаунт, поэтому я публикую плагин в своем собственном репозитории и отправляю как частный плагин. Это то, что я рекомендую.


Кордова представил resource-file - тег некоторое время назад, и он также работает в PhoneGap построить.

вы можете использовать это вместо раздвоенного плагина для копирования google-services.json и GoogleService-Info.plist файлы

положить в корень вашего проекта и использовать resource-file - тег в конфиге.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

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

вы также можете поместить его внутри www папка, в этом случае в моих примерах добавьте www/ перед именем файла в