Я могу отправлять уведомления из firebase на устройства. Но мне нужно отправить уведомление на то же устройство локально. Я использую мобильную версию oreo. Я попытался использовать этот код:
NotificationCompat.Builder b = new NotificationCompat.Builder(this,"150");
b.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setTicker("Hearty365")
.setContentTitle("Default notification")
.setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_SOUND)
.setContentInfo("Info");
NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, b.build());
Android-O Includes Notification Channels
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
int notifyId = 1;
String channelId = "some_channel_id";
Notification notification = new Notification.Builder(MainActivity.this)
.setContentTitle("Some Message")
.setContentText("You've received new messages!")
.setSmallIcon(R.drawable.ic_notification)
.setChannel(channelId)
.build();
notificationManager.notify(id, notification);
Notification Channels
Каналы уведомлений предоставляют нам возможность группировать уведомления, отправляемые нашим приложением, в управляемые группы. Как только наши уведомления попадают в эти каналы, мы больше не вносим свой вклад в их функциональность , поэтому пользователь должен управлять этими каналами. Когда дело доходит до изменения настроек уведомлений нашего приложения, пользователю будут представлены следующие варианты:
Начиная слева, вы можете видеть на первом экране, что настройки уведомлений для нашего приложения отображают настройки уведомлений для нашего приложения. Отсюда пользователь может:
Заблокируйте все каналы уведомлений для нашего приложения. Это означает, что уведомления из нашего приложения никогда не будут отображаться на устройстве пользователя. Если поддерживается, пользователь может указать, должны ли уведомления наших приложений отображаться в виде значков в приложении Home. Категории уведомлений, которые существуют для нашего приложения. Отсюда пользователь может включать или выключать их. Доступ к следующему экрану (посередине) можно получить после того, как пользователь выберет категорию уведомлений на первом экране. Отсюда пользователь может:
Блокировать все уведомления от нашего приложения, которые приходят с этого канала. Отображение уведомлений из этого канала в приложении Home, если поддерживается И, как показано на финальном снимке экрана, пользователь также может установить важность уведомлений из этого канала. Выбранный здесь параметр будет указывать, как они хотят получать подсказки при получении уведомления.
У нас также есть возможность группировать каналы уведомлений в отдельные группы. Это сделано для того, чтобы мы могли иметь одни и те же каналы уведомлений в разных режимах приложений.
Например, мое приложение может поддерживать режим «Личный и бизнес» или «Ребенок и родительский режим» — это позволяет нам предоставить возможность управлять настройками уведомлений для нескольких групп.
Они отображаются в том же месте, что и наши каналы уведомлений, за исключением того, что они просто разделены на соответствующие группы.
В более старых версиях Android (pre-O) эти новые функции будут полностью игнорироваться, поэтому нам не нужно беспокоиться о поломке текущих реализаций.
Теперь мы знаем немного больше о том, что такое каналы уведомлений, я думаю, пришло время взглянуть на то, как мы можем реализовать их в нашем приложении!
Вот как вы можете создать канал уведомлений:
CharSequence name = getString(R.string.notification_channel_name);
String description = getString(R.string.notification_channel_description);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, name, importance);
channel.setDescription(description);
NotificationManager notificationManager1 = getSystemService(NotificationManager.class);
notificationManager1.createNotificationChannel(channel);
Затем используйте канал уведомлений для отправить уведомление (не забудьте сохранить свой NOTIFICATION_CHANNEL_ID):
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_canceledrantevu)
.setContentIntent(pendingIntent)
.setContentTitle(context.getString(R.string.notification_add_busy_title))
.setContentText(context.getString(R.string.notification_add_busy_msga))
.setVibrate(new long[] {1000, 1000})
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true);
notificationManager.notify(100, builder.build());
Имейте в виду, что обязательно нужно создать канал уведомлений, если вы хотите показывать уведомления на устройствах с уровнем API >= Version.Oreo.