Как отправить локальное уведомление для всех устройств выше API уровня 16? - PullRequest
2 голосов
/ 23 апреля 2019

Я могу отправлять уведомления из 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());

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Android-O включает каналы уведомлений

    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);

Каналы уведомлений

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

Начиная слева, на первом экране видно, что настройки уведомлений для нашего приложения отображают настройки уведомлений.для нашего приложения.Отсюда пользователь может:

Блокировать все каналы уведомлений для нашего приложения.Это означает, что уведомления от нашего приложения никогда не будут отображаться на устройстве пользователя. Если поддерживается, пользователь может указать, должны ли уведомления наших приложений отображаться в виде значков в домашнем приложении. Категории уведомлений, которые существуют для нашего приложения.Отсюда пользователь может переключать их, чтобы включить или отключить. Следующий экран (посередине) доступен, когда пользователь выбирает категорию уведомлений на первом экране.Отсюда пользователь может:

Блокировать все уведомления из нашего приложения, поступающие с этого канала. Отображать уведомления с этого канала в приложении Home, если оно поддерживается. Как показано на последнем снимке экрана, пользователь также может установитьВажность уведомлений с этого канала.Выбранный здесь параметр будет указывать, как они хотят получать уведомления при получении уведомления.

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

Например, мое приложение может поддерживать режим «Личный» и «Бизнес» или «Дочерний и родительский» - это позволяет нам предоставлять возможностьуправлять настройками уведомлений в нескольких группах.

Они отображаются в том же месте, что и наши каналы уведомлений, за исключением того, что они разделены на соответствующие группы.

В более старых версиях Android (pre-O) ониновые функции будут полностью игнорироваться, поэтому нам не нужно беспокоиться о нарушении текущих реализаций.

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

Изучение Android O: Каналы уведомлений

0 голосов
/ 23 апреля 2019

Вот как вы можете создать канал уведомлений :

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

...