Как отобразить Push уведомления без GCM?

Для отображения Push-уведомлений без использования Google Cloud Messaging (GCM) в приложении на платформе Android, можно использовать Firebase Cloud Messaging (FCM). FCM является заменой GCM и предоставляет разработчикам удобные и надежные способы отправки Push-уведомлений на устройства пользователей.

Для начала работы с FCM необходимо выполнить следующие шаги:

1. Создать проект в Firebase Console (https://console.firebase.google.com/). При создании проекта автоматически будет создана служба FCM и предоставлен серверный ключ, который будет использоваться для отправки уведомлений.

2. Добавить файлы конфигурации в проект Android:
- Скачать файл google-services.json из Firebase Console и поместить его в папку app вашего проекта.
- Добавить зависимости FCM в файл build.gradle вашего проекта:

     dependencies {
         implementation 'com.google.firebase:firebase-messaging:22.0.0'
     }

- Добавить плагин apply plugin: 'com.google.gms.google-services' в файл build.gradle модуля приложения.

3. Настроить службу FCM в приложении:
- Создать класс, который расширяет FirebaseMessagingService:

     public class MyFirebaseMessagingService extends FirebaseMessagingService {
         @Override
         public void onMessageReceived(RemoteMessage remoteMessage) {
             // Обработка полученного Push-уведомления
         }
     }

- Зарегистрировать службу в манифесте приложения, добавив элемент <service> внутри элемента <application>:

     <service
         android:name=".MyFirebaseMessagingService">
         <intent-filter>
             <action android:name="com.google.firebase.MESSAGING_EVENT" />
         </intent-filter>
     </service>

4. Отправить Push-уведомление с использованием серверного ключа Firebase:
- Для отправки уведомления можно воспользоваться Firebase Admin SDK, Firebase REST API или другими методами, предоставленными Firebase.
- В примере ниже используется Firebase Admin SDK для отправки уведомления из серверной части приложения на Node.js:

     const admin = require('firebase-admin');
     const serviceAccount = require('./path/to/serviceAccountKey.json');

     admin.initializeApp({
         credential: admin.credential.cert(serviceAccount),
     });

     const message = {
         notification: {
             title: 'Заголовок уведомления',
             body: 'Текст уведомления',
         },
         topic: 'название_топика',
     };

     admin.messaging().send(message)
         .then((response) => {
             console.log('Уведомление успешно отправлено:', response);
         })
         .catch((error) => {
             console.log('Ошибка отправки уведомления:', error);
         });

5. Обработка и отображение Push-уведомлений в приложении:
- В методе onMessageReceived класса MyFirebaseMessagingService можно обработать полученное Push-уведомление и отобразить его на устройстве:

     public class MyFirebaseMessagingService extends FirebaseMessagingService {
         @Override
         public void onMessageReceived(RemoteMessage remoteMessage) {
             if (remoteMessage.getNotification() != null) {
                 String title = remoteMessage.getNotification().getTitle();
                 String body = remoteMessage.getNotification().getBody();
                 
                 // Отобразить уведомление в системной панели уведомлений и т.д.
             }
         }
     }

Таким образом, использование Firebase Cloud Messaging (FCM) позволяет отображать Push-уведомления в приложении на платформе Android без необходимости использовать Google Cloud Messaging (GCM). FCM предоставляет удобный интерфейс и надежную инфраструктуру для отправки и обработки уведомлений, обеспечивая простоту интеграции в приложение.