Разбираемся с 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