1. ホーム
  2. android

[解決済み] AWS SNSを利用したFCM

2022-10-29 11:42:42

質問

私は AWS リソースを使用していますが、プロジェクトにプッシュ通知サービスを追加することを計画しています。 AWS SNS .いくつかの質問が私を大いに悩ませています。私は1つまたは2つを除いて、これらに関する質問を見つけられませんでしたが、説明は不明瞭です。

1.Does(ドーズ AWS をサポートする FCM ? SNS で作業する GCM . しかし、Google は FCM を使うことを推奨しています。 GCM . 私は AWS をサポートする FCM .

2.行う AWS は、プッシュ通知を送信した後も、メッセージ(またはデータ)をデータベースに保存していますか?

3.SNSのアプリケーションプラットフォームにFCMのapiキーを入れてみましたが、無効なパラメータと表示されます。

どのように解決するのですか?

FCMはGCMと後方互換性があります。AWS上でのFCMのセットアップ手順は GCMセットアップ手順 であり、(少なくとも現時点では)FCM はサーバー側の設定に関して GCM と SNS と透過的に動作します。

しかし

を送信している場合は data を実装していない限り、Android デバイスにペイロードを送信しても処理されません。 クライアントサイドサービス を拡張する FirebaseMessagingService . AWSコンソールのデフォルトのJSONメッセージジェネレータは、以下のように送信します。 data メッセージを送信しますが、これは前述のサービスが実装されていない限り、アプリによって無視されます。初期テストのためにこれを回避するために、カスタム notification ペイロードを提供することができます。このペイロードは、アプリがフォアグラウンドでない限り、デバイスによって受信されます。

また GCM-FCM移行手順 がありますが、主にアプリ側を変更する必要があります。

SNS を使用するアプリで GCM/FCM をテストするために必要な手順は次のとおりです。

  1. アプリに SNSのプラットフォームアプリケーション として、Google Cloud Messaging (GCM) を選択します。 プッシュ通知プラットフォーム を選択し サーバーAPIキー API キー のフィールドに追加します。
  2. プラットフォーム アプリケーションを選択し プラットフォームエンドポイントの作成 ボタンをクリックします。
  3. インスタンスIDを指定する ( デバイストークン ) を提供します。を拡張する必要があります。 FirebaseInstanceIDService をオーバーライドし onTokenRefresh メソッドをオーバーライドして、Android アプリ内でこれを表示します。一度 を実行すると を実行したら、アプリをアンインストールして再インストールすると、最初の起動時に Android Studio の Debug コンソールにトークンが表示されるはずです。
  4. をクリックします。 エンドポイントの追加 ボタンをクリックします。
  5. プラットフォームアプリケーションの ARN リンクをクリックします。
  6. デバイス用に新しく作成されたエンドポイントを選択し エンドポイントにパブリッシュする ボタンをクリックします。
  7. JSONを選択します。 メッセージの形式 を選択し JSONメッセージジェネレータ ボタンをクリックします。
  8. テストメッセージを入力し JSONを生成する ボタンをクリックします。
  9. ここで、"gotcha part"が登場します。

SNSで生成されるメッセージは、次のような形式になります。

{
"GCM": "{ \"data\": { \"message\": \"test message\" } }"
}

先ほども述べたように data のペイロードは、それを受け取るためのサービスが実装されていない場合は無視されます。あまり多くのコードを書かずにテストしたいので、代わりに notification ペイロードを送信します。これを行うには、JSONメッセージを読み取るように変更するだけです。

{
"GCM": "{ \"notification\": { \"title\": \"test title\", \"body\": \"test body\" } }"
}

(FCMメッセージのJSON形式の詳細については FCMドキュメント .)

これを実行したら、アプリがデバイス上で実行されていないことを確認し、デバイス上で メッセージの発行 ボタンを押します。これで、端末に通知がポップアップ表示されるはずです。

もちろん、Amazon SNS API を使ってプログラム的にこれらすべてを行うこともできますが、すべてのサンプルは data ペイロードを使用しているようなので、その点に留意し、ユースケースに適したペイロードを生成する必要があります。