通知设置通道和 FCM subscribeToTopic 有什么不同?

What's different with notification set channel and FCM subscribeToTopic?

我的应用有一个会员系统(会员类型包括A、B、C),我使用Firebase FCM 向我的应用推送通知。

如果用户使用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 获取,所以我找到了官方文档 talk aout 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 相关,或者我们可以说 Firebase Messaging,当任何人使用主题发送通知时,他们决定我们需要在哪里提交消息或需要在哪个设备上发送。

香奈儿订阅: 这与特定的通知系统或设备有关,与任何类型的服务器或云消息无关。当您定义通道时,意味着您在显示时间定义通知组。
如果您将主题定义为新闻,那么您将获得仅针对新闻主题广播的唯一通知,但您可以使用通知渠道或新闻子类别将新闻划分到不同的组中。

Topic 是群组消息的字符串标识符。当发送关于某个主题的通知时,所有注册到该主题的设备都会收到它。

新闻应用程序的开发人员可能会使用此机制允许用户select 感兴趣的主题以获取有关以下方面的警报:天气、汽车、金融、犯罪等

虽然有些应用程序定义了用户自己可以订阅和取消订阅的多个主题,但有些应用程序使用这种机制向所有用户发送通知,通过定义一个主题,并将所有用户(硬编码)注册到这个主题。

Channel 是一组设置,用于定义当通知到达设备时用户将如何得到提醒。

通常开发者会为每个通道定义声音、振动、灯光等设置。用户可以随时更改这些设置,甚至可以禁用来自特定频道的通知。

新闻应用程序的开发者可能会为突发新闻定义一个具有振动和高音量的频道,同时为促销创建一个低优先级的静音频道