9

Мне нужно внедрить push-уведомления в приложении PhoneGap Build, которое я разрабатываю.Firebase Push-уведомления с помощью PhoneGap Создание с использованием cordova-plugin-fcm

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

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

Поэтому я добавил к моему config.xml:

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

И положил Google-services.json я создал из https://console.firebase.google.com/ в корне папки I 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, я бы очень признателен. Я никогда не использовал CLI Phonegap, я всегда использовал 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.

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

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

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

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

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

+0

Большое спасибо, это сработало отлично! Ну, по крайней мере, мне удалось скомпилировать его, теперь я должен посмотреть, действительно ли работает плагин cordova-plugin-fcm. Большое спасибо! –

+4

FYI, вы также можете клонировать проект и размещать его в личном хранилище в битбакете бесплатно. Затем используйте в вашем файле конфигурации – Guy

+1

Спасибо за этот ответ. Два последующих действия: 1) Почему в cordova-plugin-fcm нет только функции копирования? 2) Есть ли способ решить проблему с конфигурационным файлом таким же образом (как-то копирование из папки www)? – Yaron

4

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

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

Поместите в корне вашего проекта и использовании в resource-file тег в config.xml, как это:

При использовании Cordova-андроида 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

 Смежные вопросы

  • Нет связанных вопросов^_^