Как правильно обновить канал уведомлений android oreo
Я пытаюсь обновить канал уведомлений после его создания. А именно, я хочу правильно установить звук уведомления, но после его создания. Я не могу придумать правильный способ сделать это.
Я пытался удалить канал и заново создать его, но, похоже, он не работает...
if (notificationManager != null) {
notificationManager.deleteNotificationChannel(NOTIFICATION_CHANNEL_ID);
notificationManager.createNotificationChannel(channel);
System.out.println("Created notification channel" + channel.getSound() + " " + channel.getImportance());
}
1 ответ
Это правильно, как указано в другом ответе, что вы можете изменить имя и описание канала только после его создания. Однако, как вы указываете в своем коде, вы можете удалить канал, а затем создать его снова. Но если вы создадите тот же канал еще раз, но что-то измените, например звук, это не сработает. Я предполагаю, что Android предотвращает это изменение так же, как если бы вы попытались создать его, когда он уже существует. Таким образом, Android должен иметь возможность отслеживать все удаленные каналы (другими словами, они не удаляются полностью).
Если вы посмотрите на WhatsApp, они позволяют вам изменять звуки внутри приложения, и если вы немного исследуете, вы обнаружите, что они действительно удаляют и создают каналы.
Так что ты можешь сделать? Что вы можете сделать, так это изменить идентификатор нового канала уведомлений. Возможно, добавление достаточно большого случайного элемента помешает вам дважды иметь один и тот же идентификатор. Или увеличьте что-нибудь и сохраните эту информацию в своем приложении (prefs или db или что-то в этом роде). Если у "воссозданного" канала новый идентификатор, Android примет ваши "изменения". Поскольку вы не изменяете существующий канал, вы создаете совершенно новый. И если вы сохраните остальную видимую для пользователя информацию без изменений (например, имя, описание и т. Д.), То пользователь не заметит этого, а только почувствует, что звук этого типа уведомления (канала) был изменен из приложения.
Есть минусы? Ну, а вот что самое важное, Android покажет в настройках уведомлений приложения, сколько раз канал был удален (чтобы предупредить пользователя о "рассылке спама"). Не думаю, что многих это волнует. И вы также отклоняетесь от дизайна, который хочет Android (полный пользовательский контроль над каналами), что, возможно, может быть нежелательным.
Итак, исходя из того, как вы описываете свой вариант использования, я думаю, что будет справедливо сделать это таким образом, чтобы достичь того, что вы хотите:)
После создания канала уведомлений пользователь получает полный контроль над его настройками. Как разработчик, вы можете изменить только название и описание канала. Если вы хотите восстановить канал, вы должны использовать другой идентификатор.
Смотрите: https://developer.android.com/training/notify-user/channels