Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Разбираемся с push в Android приложении


Сегодня рассмотрим как работать с push-уведомлениями в Android.

Допустим, у нас уже создан проект и открыт MainActivity.
Внутри класса объявим приватную переменную NotificationManager

private NotificationManager nm;

В методе onCreate инициализируем его.

nm = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

Здесь мы указали какой системный сервис нам нужен, а точнее нужен нам NOTIFICATION_SERVICE.

Теперь отложим метод onCreate и перейдём к следующему этапу.

Внутри класса MainActivity создадим метод, допустим назовём его showNotification не забудем передать ему View.

public void showNotification(View v)

Далее нам необходимо создать Intent.
Он нам понадобится для того, чтобы открыть его при нажатии на уведомлении.
Создаём Activity. Это делается так: File - New - Activity и выбираете нужный активити (это действие выполняется в Android Studio).

Я свой Activity назвал ReadActivity и поэтому новый Intent будет выглядеть так.

Intent intent = new Intent(getApplicationContext(), ReadActivity.class);

Далее этот Intent нам необходимо передать в PendingIntent, который как раз и отвечает за перенаправление в нужный Activity при нажатии на уведомление.

PendingIntent pending = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

getApplicationContext() - передаёт контекст,
0 - это requestCode.
intent - это только что созданный нами Intent.
PendingIntent.FLAG_CANCEL_CURRENT - Флаг, указывающий, что если описанный PendingIntent уже существует, текущий должен быть уничтожен до создания нового.

Для создания Notification нам понадобится Builder или по-русски Билдеры).

Объявим наш билдер.

Notification.Builder builder = new Notification.Builder(getApplicationContext());

Далее будем "строить" наш Notification.

builder  
        //указываем какой активити будет открыт при нажатии
        .setContentIntent(pending) 
        // укажем маленькую иконку
        .setSmallIcon(R.mipmap.ic_launcher)  
       //укажем большую иконку .setLargeIcon(BitmapFactory.decodeResource(getApplication().getResources(), R.mipmap.ic_launcher)) 
         //сообщение в actionBar
        .setTicker("Уведомлюха")  
        //время создания уведомления, указываем текущее
        .setWhen(System.currentTimeMillis())  
        //После нажатия закрываем уведомление
        .setAutoCancel(true)  
        //указываем заголовок
        .setContentTitle("Новое уведомление")  
        // указывам текст
        .setContentText("Клацни по мне");

На основе нашего Билдер-а создадим Notification

Notification notification = builder.build();

И передадим нотификейшн нашему менеджеру, но сначала внутри класса объявим NOTID индентификатор нашего notification.

private final int NOID = 1234;

Передаём в наш NotificationManager

nm.notify(NOTID, notification);

Теперь мы можем вызвать наше уведомление. Например на нажатие кнопки. Далее нас ждёт интересный цикл статей.

Полный листинг

Материал подготовлен автором @zheev

1
56.933 GOLOS
На Golos с August 2017
Комментарии (1)
Сортировать по:
Сначала старые