[解決済み] AWS SNSを利用したFCM
質問
私は
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 をテストするために必要な手順は次のとおりです。
- アプリに SNSのプラットフォームアプリケーション として、Google Cloud Messaging (GCM) を選択します。 プッシュ通知プラットフォーム を選択し サーバーAPIキー を API キー のフィールドに追加します。
- プラットフォーム アプリケーションを選択し プラットフォームエンドポイントの作成 ボタンをクリックします。
-
インスタンスIDを指定する (
デバイストークン
) を提供します。を拡張する必要があります。
FirebaseInstanceIDService
をオーバーライドしonTokenRefresh
メソッドをオーバーライドして、Android アプリ内でこれを表示します。一度 を実行すると を実行したら、アプリをアンインストールして再インストールすると、最初の起動時に Android Studio の Debug コンソールにトークンが表示されるはずです。 - をクリックします。 エンドポイントの追加 ボタンをクリックします。
- プラットフォームアプリケーションの ARN リンクをクリックします。
- デバイス用に新しく作成されたエンドポイントを選択し エンドポイントにパブリッシュする ボタンをクリックします。
- JSONを選択します。 メッセージの形式 を選択し JSONメッセージジェネレータ ボタンをクリックします。
- テストメッセージを入力し JSONを生成する ボタンをクリックします。
- ここで、"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
ペイロードを使用しているようなので、その点に留意し、ユースケースに適したペイロードを生成する必要があります。
関連
-
[解決済み] Amazon SNSとAmazon SQSの違いは何ですか?
-
[解決済み] android: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] 非推奨のandroid.support.v4.app.ActionBarDrawerToggleの置き換え方法
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
-
[解決済み] Android: xml リソースからの整数値
-
[解決済み] Travis.yml ./gradlew : パーミッションが拒否されました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 設定ページに移動せずに位置情報サービスをオンにする
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] プログラムでソフトキーボードを開く
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] 文字サイズとアンドロイドの画面サイズの違い
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。
-
[解決済み] HttpURLConnectionを使ったPOSTによるファイル送信