Чем отличаются уведомления с установленным каналом и FCM subscribeToTopic? - PullRequest
0 голосов
/ 16 мая 2018

Мое приложение имеет систему участника (тип участника включает 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());
}

Теперь я могу показать уведомление, если FCMpush от 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");

Должен ли янаписать другой код setChannel(id); и deleteNotificationChannel(id); только для API> = 26?

Любое предложение будет оценено.Заранее спасибо.

1 Ответ

0 голосов
/ 16 мая 2018

Это обе вещи разные,

Тема Подписаться: Подписка на тему связана с FCM, или мы можем сказать Firebase Messaging, когда кто-то отправляет уведомление, используя тему, в то время, когда он решает, куда нам отправить сообщение или в какое устройство нужно отправить.

Подписка на Chanel: Это связано с конкретной системой уведомлений или устройством, не связанным с каким-либо типом сервера или облачного сообщения. Когда вы определяете канал, это означает, что вы определяете группу уведомлений во время отображения.
Если вы определили тему как новость, вы получите единственное уведомление, которое транслируется только для новостной темы, но вы можете разделить новости в другой группе, используя канал уведомлений или подкатегорию новостей.

...