Как добавить push-уведомления в Android-приложение

Автор: | 04.08.2026

Правильная стратегия взаимодействия с пользователями в мобильном приложении никогда не была так важна, как сейчас, ведь пользователи ожидают от вашего приложения полезной и своевременной информации.

С помощью Notify — нового API уведомлений от Twilio — вы можете отправлять пользователям push-уведомления в реальном времени, даже когда приложение не открыто.

Давайте создадим Android-приложение, которое сможет получать и обрабатывать push-уведомления, отправленные с сервера.

— Ваша любимая IDE для разработки под Android. Я буду использовать Android Studio.

— Установленный Node.js.

— Аккаунт Twilio — зарегистрируйтесь бесплатно!

— Доступ к Notify — запросите ранний доступ здесь.

— ngrok — подробнее об этом инструменте можно прочитать здесь.

Чтобы запустить наш сервер, сначала нужно создать учетные данные. Перейдите в раздел Credentials на панели Notify Console и создайте новый push-сертификат типа GCM. Вам понадобится GCM API Key и конфигурационный файл, который можно сгенерировать, следуя инструкциям на этой странице.

*Android Package Name* должен совпадать с пакетом вашего приложения. Если у вас уже есть приложение, скопируйте эту информацию из тега *manifest* в файле *app/src/main/AndroidManifest.xml*. Если вы создаете приложение с нуля, используйте значения, указанные выше в поле *package*.

После этого нажмите кнопку *Download google-services.json* и скопируйте полученный файл. Вам также понадобится *Server API Key*, который нужно вставить туда, где вы создавали push-сертификат.

Сохраните данные и запишите SID этого push-сертификата. Его можно найти на странице Credentials.

Перейдите в раздел Services, нажмите *Create Service* и назовите его как угодно. Я назвал свой *GCM Push Service*. В поле *Twilio Push GCM Credential SID* выберите только что созданный push-сертификат и нажмите *Save*.

Запишите SID этого сервиса, так как он понадобится при настройке бэкенда. Его можно найти на странице Services.

Теперь, когда у нас есть все необходимые учетные данные для отправки push-уведомлений, давайте настроим бэкенд.

Клонируйте репозиторий Notifications Quickstart и измените файл *config.json*, добавив туда только что созданные учетные данные, а также ваш *Account SID* и *Auth Token*, которые можно получить здесь.

Ваш файл *config.json* должен выглядеть примерно так:

Запустите приложение, выполнив в терминале команду:

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

В новом окне терминала выполните следующую команду и запишите сгенерированный URL для переадресации:

Если вы не хотите проходить весь процесс сборки приложения и просто хотите развернуть готовое приложение на устройстве, клонируйте этот репозиторий.

На данном этапе у нас есть готовый бэкенд для отправки push-уведомлений, и вы можете либо добавить функциональность в существующее приложение, либо создать новое Android-приложение с пустой активностью.

Откройте файл *build.gradle* на уровне проекта и добавьте следующую зависимость:

В файле *build.gradle* на уровне модуля добавьте следующие зависимости:

apply plugin: ‘com.google.gms.google-services’

Android Studio предложит синхронизировать проект, но перед этим переместите ранее загруженный файл *google-services.json* в папку *app*, чтобы получилось следующее:

Теперь, когда все зависимости подключены, изменим *AndroidManifest.xml*, чтобы приложение знало, что оно может получать push-уведомления, даже когда работает в фоновом режиме.

Добавьте следующие разрешения:

Далее зарегистрируем классы *Broadcast Receiver* и *Service*. Они обеспечат получение сообщений приложением и обработку интентов даже в фоновом режиме.

Но наши сервисы ссылаются на классы, которые еще не созданы. Эти классы практически идентичны тем, что приведены в примере кода Google Services, поэтому просто скопируем их в проект. Для удобства добавьте следующие четыре класса в новую папку *service* по пути *src/main/java/com/testapp/*:

— MyGcmListener.java

— MyInstanceIDListenerService.java

— QuickstartPreferences.java

— RegistrationIntentService.java

В последнем классе замените *YOUR_NGROK_URL* на URL, полученный ранее от ngrok. Используйте только сам URL без протокола, например:

В этом файле вы увидите ссылку на класс *BindingResource*, которого не было в исходном примере Google. Это связано с тем, что в примере не реализована регистрация на сервере, так как можно использовать разные серверы.

В корне приложения вместе с MainActivity.java создайте новый класс *BindingResource.java*. Мы будем использовать удобную библиотеку Retrofit, которая преобразует HTTP API в Java-интерфейс. Это позволит нашему приложению напрямую взаимодействовать с бэкендом.

Теперь, когда все классы на месте, изменим макет, чтобы убедиться, что приложение корректно запустилось и подключено к нашим сервисам. Откройте файл *src/main/res/layout/activity_main.xml* и замените существующий *TextView* на следующий:

Откройте файл *src/main/java/com/testapp/MainActivity.java* и в начале добавьте следующие импорты и переменные:

Мы используем SharedPreferences для хранения токенов и информации об идентификации. При желании можно использовать базу данных.

Далее реализуем несколько методов для регистрации сервиса и возобновления активности после пробуждения.

При запуске приложения мы создаем идентификатор и конечную точку для этого устройства. *Identity* определяется вашим приложением и может иметь несколько конечных точек. Если в вашем приложении есть понятие пользователей, вы можете использовать его вместо этого.

*Endpoint* — это идентификатор устройства, к которому относится эта регистрация. Подробнее о привязках можно узнать здесь. Вы можете изменить эти значения на свои.

Перейдите в меню *Build* и выберите *Rebuild Application*. После завершения сборки запустите приложение на устройстве или эмуляторе, и вы увидите, что оно успешно регистрируется на нашей конечной точке.

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

Вернитесь в терминал и откройте новое окно, убедившись, что вы находитесь в папке *notifications-quickstart-node*, затем введите следующую команду:

Вам нужно заменить *marcos* на то значение *Identity*, которое вы использовали в методе *createBinding*. На вашем устройстве должно появиться push-уведомление.

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

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

Буду рад увидеть, что вы создадите! Свяжитесь со мной в Twitter @marcos_placona или по электронной почте marcos@twilio.com и расскажите об этом.