Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通知集频道和FCM SubscribeTopic有什么不同?_Android_Firebase_Firebase Cloud Messaging_Android Notifications - Fatal编程技术网

Android 通知集频道和FCM SubscribeTopic有什么不同?

Android 通知集频道和FCM SubscribeTopic有什么不同?,android,firebase,firebase-cloud-messaging,android-notifications,Android,Firebase,Firebase Cloud Messaging,Android Notifications,我的应用程序有一个成员系统成员类型包括a、B、C,我使用Firebase FCM将通知推送到我的应用程序 如果用户使用登录,我将使用FirebaseMessaging.getInstance.SubscribeToPica;以及取消订阅Topicb;取消TOPICC的订阅 它工作得非常好,直到我发现如果设备的API>=26,我的应用程序通知将不会显示。原因是设置频道是最新android版本的重要更新 我更改了通知代码,如下所示: // For API >=26 NotificationMa

我的应用程序有一个成员系统成员类型包括a、B、C,我使用Firebase FCM将通知推送到我的应用程序

如果用户使用登录,我将使用FirebaseMessaging.getInstance.SubscribeToPica;以及取消订阅Topicb;取消TOPICC的订阅

它工作得非常好,直到我发现如果设备的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获得,所以我发现官方的doc talk A没有删除通知渠道:

我对此感到困惑,所以我的FCM订阅主题是什么意思;以及取消订阅Topicb;取消TOPICC的订阅

我是否应该编写另一个代码setChannelid;和deleteNotificationChannelid;仅适用于API>=26


如有任何建议,将不胜感激。提前谢谢。

这两件事是不同的

主题订阅: 主题订阅与FCM相关,或者我们可以说Firebase消息传递,当任何人使用主题发送通知时,他们会决定我们需要在哪里提交消息或需要在哪个设备中发送消息

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

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

新闻应用程序的开发人员可能会使用此机制允许用户选择感兴趣的主题以获取警报,例如:天气、汽车、金融、犯罪等

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

通道是一组设置,定义当通知到达设备时,用户将如何得到警报

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


新闻应用程序的开发人员可能会为突发新闻定义一个振动和高声的频道,在为促销活动创建低优先级的静默频道时

您是否尝试保持频道ID不变&只是玩主题订阅/取消订阅?。AFAIU主题与兴趣相关,而频道只是获取特定类型/类别通知的媒介,而与兴趣无关。如果有错请纠正我谢谢你的回复,你的频道ID是指FCM注册ID,对吗?不。它只是一个INT值,例如1、2或..不,我以前没有尝试过。你是说塞特坎奈达?但它应该是字符串参数,我仍然尝试使用setChannelId1;'当从FCM`发送通知时,我的应用程序日志将显示找不到频道。谢谢您的回复。你的意思是将频道设置为通知只是一种分类,对吗?但我还是不明白重点。为什么我的通知。setChannelIdB;而不是从Firebase发送消息哪个频道是,我的通知不会显示出来?我必须这么做。塞特坎奈达;
NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);