9

Ich muss Push-Benachrichtigungen in einer von mir entwickelten PhoneGap Build-App implementieren.Firebase Push-Benachrichtigungen mit PhoneGap Mit cordova-plugin-fcm erstellen

Ich habe nicht viel Dokumentation über die Verwendung des neuen Google-Dienstes Firebase Cloud Messaging (FCM) gefunden, aber da es nun so sein soll, suchte ich nach einer API, die mein Leben erleichtern könnte.

ich gefunden: https://www.npmjs.com/package/cordova-plugin-firebase

So habe ich zu meinem config.xml:

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

und legte die Google-services.json ich von https://console.firebase.google.com/ im Stammverzeichnis des Ordners erstellt habe ich zip auf den Phonegap Build hochladen.

Aber ich erhalte den folgenden Fehler:

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 

Ich habe das „Projekt“ Ordner in der Wurzel und legen Sie die dort Datei aber, dass weder funktioniert nicht.

Derzeit meine App-Ordner wie folgt aussehen:

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

Wenn jemand weiß, wo ich die Datei zu setzen oder eine andere Möglichkeit, dies zu realisieren haben auch andere API verwenden, würde ich es wirklich schätzen. Ich habe noch nie Phonegap CLI verwendet, ich habe immer Phonegap Build verwendet.

Antwort

8

Die Dateien müssen neben dem Ordner www sein, Problem ist, dass Phonegap Build nur können Sie den Inhalt des genannten Ordners hochladen, damit Sie die Dateien nicht hochladen können.

Zum Glück gibt es etwas, was Sie tun können; Build installiert die Plugins direkt von npm, und Plugins können funktionieren, dachte das ganze Projekt, also was Sie brauchen, ist ein Plugin, das die Dateien [google-services.json, ] für Sie kopiert.

Die meiste Arbeit wurde bereits erledigt: cordova-plugin-fcm-config.

Es wurde nicht für diesen Zweck gebaut, funktioniert aber wunderbar.

Es gibt jedoch eine zusätzliche Komplexität; da Sie nicht Plugins laden können (Sie in Ihrem config.xml einen Verweis auf sie nur hinzufügen können), und dieses Plugin Ihre eigene App-Konfigurationsdateien benötigt, haben Sie zu:

  1. Clone/Gabel das Plugin in Ihrem eigenes Repository.
  2. Ersetzen Sie die Konfigurationsdateien.
  3. Laden Sie es irgendwo Build kann finden.

Wo laden Sie es hoch? Das könnte schwierig sein. Die Infrastruktur basiert auf der Idee, dass Plugins für allgemeine Zwecke gedacht sind und in jedem Projekt xml konfiguriert werden können, daher ist npm sinnvoll. Aber in diesem Fall enthält Ihr Plugin sehr spezifische Daten zu Ihrem Projekt, daher würde das Hochladen auf npm den Namespace meiner Meinung nach verschmutzen.

Ich weiß nicht über Sie, aber ich habe ein kostenpflichtiges Konto, also veröffentliche ich das Plugin in meinem eigenen Repository und sende es als privates Plugin ein. Das empfehle ich.

+0

Vielen Dank, das hat perfekt funktioniert! Nun, zumindest konnte ich es kompilieren, jetzt muss ich sehen, ob das cordova-plugin-fcm Plugin tatsächlich funktioniert. Vielen Dank! –

+4

FYI, Sie können das Projekt auch klonen und es in einem persönlichen Repository in Bitbucket kostenlos hosten. Dann benutze in deiner Konfigurationsdatei – Guy

+1

Danke für diese Antwort. Zwei Follow-Ups: 1) Warum enthält cordova-plugin-fcm nicht nur die Kopierfunktion? 2) Gibt es eine Möglichkeit, das Problem der Konfigurationsdatei auf die gleiche Weise zu lösen (Kopieren aus dem www-Ordner)? – Yaron

4

Cordova hat vor einiger Zeit das resource-file Tag eingeführt und es funktioniert auch in Phonegap Build.

können Sie, dass anstelle eines gegabelten Plugin die google-services.json und GoogleService-Info.plist Dateien

Setzen Sie die in der Wurzel Ihres Projekts und die Verwendung der resource-file-Tag in der config.xml wie diese kopieren:

Bei der Verwendung von cordova-android 7 oder höher:

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

ältere Versionen

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

Sie können auch innerhalb www Ordner abgelegt, in diesem Fall in meinen Beispielen www/ vor dem Dateinamen in das Feld src hinzuzufügen.

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