Мое приложение имеет систему участника (тип участника включает 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
push от 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?
Любое предложение будет оценено.Заранее спасибо.