web-dev-qa-db-ja.com

Cordova-plugin-fcmを使用したPhoneGap BuildでのFirebaseプッシュ通知

開発中のPhoneGap Buildアプリにプッシュ通知を実装する必要があります。

新しいGoogleサービスであるFirebase Cloud Messaging(FCM)の使用に関するドキュメントはあまり見つかりませんでしたが、これを使用する必要があると思われるので、自分の生活を楽にするAPIを探しました。

私が見つけた: https://www.npmjs.com/package/cordova-plugin-firebase

だから私は私のconfig.xmlに追加しました:

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

そして、私が https://console.firebase.google.com/ から作成したgoogle-services.jsonを、Zipフォルダーのルートに配置して、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

ルートに「プロジェクト」フォルダーを作成してそこにファイルを配置しましたが、どちらも機能しません。

現在、私のアプリフォルダーは次のようになっています。

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

私がそのファイルをどこに置くべきかを知っている人、または他のAPIを使用してこれを実装する他の方法がある場合は、本当に感謝しています。私はPhonegap CLIを使用したことがなく、常にPhonegap Buildを使用してきました。

9
Jorge Lizaso

ファイルはwwwフォルダーの横にある必要があります。問題は、Phonegpビルドでは、そのフォルダーのコンテンツのみをアップロードできるため、ファイルをアップロードできないことです。

幸い、あなたにできることがいくつかあります。 Buildはnpmから直接プラグインをインストールし、プラグインはプロジェクト全体で機能するため、必要なのはファイル[google-services.jsonGoogleService-Info.plist]をコピーするプラグインです。

ほとんどの作業は既に行われています: cordova-plugin-fcm-config

このプラグインは、必要なFCM構成をプロジェクトのルートフォルダーとXcodeプロジェクトにコピーします。それは偉大なcordova-plugin-fcmプラグインと組み合わせて使用​​されます。

この目的のために作られたわけではありませんが、うまく機能します。

ただし、さらに複雑になります。プラグインをアップロードすることはできず(config.xmlへの参照のみを追加できます)、このプラグインは独自のアプリ構成ファイルを必要とするため、次のことを行う必要があります。

  1. プラグインを自分のリポジトリにクローン/フォークします。
  2. 構成ファイルを置き換えます。
  3. Buildが見つけられる場所にアップロードします。

どこにアップロードしますか?それは難しいかもしれません。インフラストラクチャは、プラグインは汎用的なものであり、各プロジェクトのxmlで構成できるという考えに基づいて構築されているため、npmは理にかなっています。ただし、この場合、プラグインにはプロジェクトに固有のデータが含まれるため、npmにアップロードすると名前空間が汚染されると思います。

私はあなたのことは知りませんが、有料アカウントを持っているので、自分のリポジトリでプラグインを公開し、プライベートプラグインとして送信します。これは私がお勧めするものです。

8
Jaime Gómez

Cordovaはresource-fileタグを少し前に導入し、Phonegap Buildでも機能します。

フォークされたプラグインの代わりにそれを使用して、google-services.jsonおよびGoogleService-Info.plistファイルをコピーできます。

次のように、プロジェクトのルートにを置き、config.xmlでresource-fileタグを使用します。

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フォルダー内に置くこともできます。その場合、私の例では、srcフィールドのファイル名の前にwww/を追加します。

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

9
jcesarmobile

私にとっては、.xcodeprojファイルに移動して、メインインターフェイスをMainViewController.xibからCDVLaunchScreen.storyboardに変更する必要がありました。

再構築するとうまくいきました。私のアプリはIonicで構築されており、Ionic Creatorで起動しました。

0
blaiser