私のアプリにはメンバーシステム(メンバータイプにはA、B、Cが含まれます)があり、FirebaseFCM
を使用してアプリに通知をプッシュします。
Aとユーザログインした場合、私が使用されますFirebaseMessaging.getInstance().subscribeToTopic("A");
と、unsubscribeFromTopic("B");
unsubscribeFromTopic("C");
デバイスのAPI> = 26の場合、アプリの通知が表示されないことがわかるまで、これは非常にうまく機能します。チャンネルが設定されている理由は、最新のAndroidバージョンの重要な更新です。
次のように、通知コードを変更しました。
// For API >=26
NotificationManager mNotificationManager =
(NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
"A",
"A",
NotificationManager.IMPORTANCE_HIGH);
channel.setDescription("description");
channel.enableLights(true);
channel.enableVibration(true);
Notification.Builder builder =
new Notification.Builder(mContext)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle(title)
.setContentText(message)
.setChannelId("A");
mNotificationManager.notify(1, builder.build());
}
これでFCM
、Aからプッシュした場合に通知を表示できます。
明らかに、BまたはCから取得したい場合は、チャネルBまたはCを設定する必要があります。
しかし、メンバータイプAはAからのみ取得できるはずなので、公式のドキュメントの話を見つけましたDelete a notification channel
:
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);
私はそれと混同しているので、私のFCM
subscribeToTopic("A");
との意味は何ですかunsubscribeFromTopic("B");
unsubscribeFromTopic("C");
API> = 26の場合setChannel(id);
にdeleteNotificationChannel(id);
のみ、別のコードを作成する必要がありますか?
任意の提案をいただければ幸いです。前もって感謝します。
これは両方とも異なります、
トピックのサブスクリプション:トピックのサブスクリプションはFCMに関連しています。または、誰かがトピックを使用して通知を送信したときに、メッセージを送信する場所やデバイスを送信する必要がある場所を決定したときに、FirebaseMessagingと言うことができます。
シャネルサブスクリプション:これは、特定の通知システムまたはデバイスに関連しており、どのタイプのサーバーまたはクラウドメッセージにも関連していません。チャネルを定義する場合、これは表示時に通知グループを定義することを意味します。
トピックをニュースとして定義すると、ニューストピックのみをブロードキャストする唯一の通知を受け取りますが、通知チャネルまたはニュースサブカテゴリを使用してニュースを別のグループに分割できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加