web-dev-qa-db-fra.com

Notifications push Firebase avec PhoneGap Build utilisant cordova-plugin-fcm

J'ai besoin d'implémenter des notifications Push dans une application PhoneGap Build que je développe.

Je n'ai pas trouvé beaucoup de documentation sur l'utilisation du nouveau service Google, Firebase Cloud Messaging (FCM), mais comme c'est censé être ce que nous devons utiliser maintenant, j'ai recherché une API qui pourrait me faciliter la vie.

J'ai trouvé: https://www.npmjs.com/package/cordova-plugin-firebase

J'ai donc ajouté à mon config.xml:

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

Et mettez le google-services.json que j'ai créé à partir de https://console.firebase.google.com/ à la racine du dossier que je zippe pour télécharger vers la Phonegap Build.

Mais j'obtiens l'erreur suivante:

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

J'ai créé le dossier "project" à la racine et y ai mis le fichier mais cela ne fonctionne pas non plus.

Actuellement, mon dossier d'application ressemble à:

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

Si quelqu'un sait où je dois mettre ce fichier ou a un autre moyen de l'implémenter même en utilisant une autre API, je l'apprécierais vraiment. Je n'ai jamais utilisé Phonegap CLI, j'ai toujours utilisé Phonegap Build.

9
Jorge Lizaso

Les fichiers doivent être à côté du dossier www, le problème est que Phonegap Build vous permet uniquement de télécharger le contenu dudit dossier, vous ne pouvez donc pas télécharger les fichiers.

Heureusement, vous pouvez faire quelque chose; Build installe les plugins directement à partir de npm, et les plugins peuvent fonctionner dans l'ensemble du projet, donc ce dont vous avez besoin est un plugin qui copie les fichiers [google-services.json, GoogleService-Info.plist] pour vous.

La plupart du travail a déjà été fait: cordova-plugin-fcm-config .

Ce plugin copie les configurations FCM requises dans les dossiers racine du projet et le projet Xcode. Il est utilisé en combinaison avec le grand plugin cordova-plugin-fcm.

Il n'a pas été construit à cet effet mais fonctionne à merveille.

Il y a cependant une complexité supplémentaire; puisque vous ne pouvez pas télécharger de plugins (vous ne pouvez y ajouter qu'une référence dans votre config.xml), et ce plugin a besoin de vos propres fichiers de configuration d'application, vous devrez:

  1. Clonez/Forkez le plugin dans votre propre référentiel.
  2. Remplacez les fichiers de configuration.
  3. Téléchargez-le quelque part que Build puisse trouver.

Où le téléchargez-vous? Cela pourrait être délicat. L'infrastructure est construite autour de l'idée que les plugins sont à des fins générales et peuvent être configurés dans chaque xml de projet, donc npm est logique. Mais dans ce cas, votre plugin contiendra des données très spécifiques à votre projet, donc le téléchargement vers npm polluerait l'espace de noms à mon avis.

Je ne sais pas pour vous, mais j'ai un compte payant, donc je publie le plugin dans mon propre référentiel et le soumets en tant que plugin privé. C'est ce que je recommande.

8
Jaime Gómez

Cordova a présenté le resource-file tag il y a quelque temps et cela fonctionne également dans Phonegap Build.

Vous pouvez utiliser cela au lieu d'un plugin forké pour copier le google-services.json et GoogleService-Info.plist des dossiers

Mettez le à la racine de votre projet et utilisez le resource-file tag dans le config.xml comme ceci:

Si vous utilisez cordova-Android 7 ou plus récent:

<platform name="Android">
  <resource-file src="google-services.json" target="app/google-services.json" />
</platform>

versions plus anciennes

<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>

Vous pouvez également le placer dans le dossier www, dans ce cas, dans mes exemples, ajoutez www/ avant le nom du fichier dans le champ src.

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

9
jcesarmobile

Pour moi, je devais aller dans le fichier .xcodeproj et changer l'interface principale de MainViewController.xib à CDVLaunchScreen.storyboard

Reconstruisez et cela a fonctionné. Mon application a été construite avec Ionic et je l'ai lancée dans Ionic Creator.

0
blaiser