web-dev-qa-db-ja.com

Android FCMプッシュメッセージの通知チャネルAndroid 8

アプリにtargetSdkVersion 26(Android 8)が追加され、アプリはFCMプッシュ通知を使用します。

FCMドキュメント が規定しているように、FCMクライアントライブラリをバージョン11.2.0に更新しました。

dependencies {
     compile 'com.google.firebase:firebase-messaging:11.2.0'
}

このFCMクライアントライブラリを使用すると、Androidデバイスに表示されるようになったFCM通知が更新されます。ただし、アプリがバックグラウンドにある場合、FCMメッセージを処理するのはシステムなので、デフォルトのAndroid「Miscellaneous」という名前の通知チャネルは、私たちが望んでいるものではありません(他の通知チャネルがあり、「Miscellaneous」はそのリストに混乱を招きます)。

FCM documentation は、FCMメッセージのデフォルトの通知チャネルを指定する方法があると述べています。

(オプション)アプリケーションコンポーネント内で、デフォルトのアイコン、色、および通知チャネルを設定するメタデータ要素(Androidの新機能= O)通知用。Androidは、着信メッセージがアイコン、色、またはnotification_channelを明示的に設定しない場合は常にこれらの値を使用します。

ただし、コードサンプルは表示されていません(サンプルはアイコンと色についてのみ表示されています)。そこで、githubの Firebase Cloud Messagingクイックスタート でサンプルをグーグルで見つけました:

<meta-data
    Android:name="com.google.firebase.messaging.default_notification_channel"
    Android:value="@string/default_notification_channel_id"/>

しかし、それは機能しません-FCM通知はまだ「その他」チャネル内に表示されます。そして、私はログに表示されます:

W/FirebaseMessaging:AndroidManifestにデフォルトの通知チャネルメタデータがありません。デフォルト値が使用されます。

もちろん、私はアプリを再インストールしようとしました。まだ問題があります。

さて、理想的には、メッセージを送信する時点でバックエンドに通知チャネルを指定する何らかの方法があるはずです。送信をテストできるFCM開発コンソールには、UIに次のようなオプションがあります。

enter image description here

そしてそれはうまく機能します。ただし、バックエンドはJava Amazon SNS APIを使用し、そのAPIがメッセージを送信するときにAndroid通知チャネルを指定できるかどうかわからない新しいAndroid機能、およびAmazonはそれを採用する時間が必要です。)AndroidManifest.xmlでデフォルトの通知チャネルを設定することは現時点では有効な回避策ですが、機能しません。

12
Vit Khudenko

ドキュメントを見る: https://firebase.google.com/docs/cloud-messaging/http-server-ref

Android_channel_id通知のチャンネルID(Android O)の新機能)。

このキーを持つ通知を受信する前に、アプリはこのIDでチャネルを作成する必要があります。

リクエストでこのキーを送信しない場合、または提供されたチャンネルIDがアプリでまだ作成されていない場合、FCMはアプリマニフェストで指定されたチャンネルIDを使用します。

含めるようにしてくださいAndroid_channel_id jsonでfcmに投稿しようとしています。マニフェスト値がなぜあなたのために機能しないのか、私にはわかりません。リクエストにチャンネルを追加してみてください。FirebaseConsoleと同じ効果が得られます。

編集:私はちょうどあなたがAmazonクライアントの統合を求めていることを実現しました。 jsonリクエストを手動で作成できるかもしれません(Amazonサービスについてはあまり知りません、申し訳ありません)。

9
user1209216