Правильный способ создания каналов уведомлений из Android O Api

Каналы уведомлений, которые появились в версии Android O (API 26). Я читал об этом по следующим ссылкам:

Вопросы:

  1. Если у меня несколько номеров уведомлений, то стоит ли создавать каналы уведомлений при запуске приложения и сохранять их в ApplicationScope?

    public void addNotificationChannels(Context context) {
    
        List<NotificationChannel> channels = new ArrayList<>();
        channels.add("channel_1");
        channels.add("channel_2");
        .
        .
        channels.add("channel_7");
    
        NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannels(channels);
    
    }
    
  2. Что будет, если я попытаюсь выполнить эту строку new Notification.Builder(getApplicationContext(), PRIMARY_CHANNEL) перед добавлением каналов в диспетчер уведомлений

3 ответа

Что я делаю, так это расширение класса приложения (не забудьте обновить манифест приложения именем класса) и создание каналов уведомлений один раз в методе onCreate. Это гарантирует, что каналы уведомления всегда создаются при создании уведомления.

ИМХО, это пустая трата циклов ЦП, чтобы (пытаться) создавать каналы уведомлений для каждого уведомления снова и снова.

В качестве примечания: я всегда также регистрирую версию приложения, что весьма полезно, когда кто-то отправляет logcat.

  1. В идеале, вы должны создать канал при публикации уведомления на него. Звонить безопасно createNotificationChannel с тем же идентификатором, использованным ранее, он не будет воссоздан.
  2. Ваша заявка не будет публиковать это уведомление. Система может показывать предупреждение о том, что вашему приложению не разрешено публиковать это уведомление.

А) Как сказано в документации:

Создание существующего канала уведомлений с его исходными значениями не выполняет никаких операций, поэтому безопасно вызывать этот код при запуске приложения.

Таким образом, вы можете безопасно создавать канал уведомлений одновременно с созданием самого уведомления, поэтому нет необходимости проверять, создан ли канал уже.

Б) Внутри приложения или любой деятельности / фрагмента.

Примечание. В случае использования необработанного FCM интересно создать канал до того, как SDK опубликует для вас уведомление, потому что в соответствии с параметром push-loadload android_channel_idВы можете связать этот push-канал с конкретным каналом, уже созданным в вашем приложении.

Полезные нагрузки Fcm: https://firebase.google.com/docs/cloud-messaging/http-server-ref

Я думаю, что есть два разумных пути:
1. Создайте все каналы в подклассе приложения,
2. Создайте все каналы в своей основной деятельности, которая начинается с приложения.

Другие вопросы по тегам