Firebase – одна из самых универсальных платформ для разработки приложений, доступных на рынке прямо сейчас.
Эта статья была первоначально опубликована по адресу: Эта статья была первоначально опубликована по адресу:
То, что начиналось как независимая компания, было приобретено Google еще в 2014 году, и с тех пор им не приходилось оглядываться назад. Сегодня Firebase может похвастаться 18 различными продуктами, которые удовлетворяют самые разные потребности как мобильных, так и веб-приложений. Сегодня мы рассмотрим, как мы можем реализовать push-уведомления в нашем приложении для Android с помощью Firebase Cloud Messaging, широко известного как FCM. Этот учебник предполагает базовые знания программирования на Android и Firebase. Вы можете перейти к Firebase Console , чтобы узнать, как настроить свой проект.
подглядывать
Вот небольшой предварительный просмотр приложения, которое мы будем создавать. У нас есть два приложения, одно из которых будет отправлять push-уведомления, а другое – получать их. Отправитель отправляет уведомление в определенную тему, и все подписчики этой конкретной темы получат уведомление. Это также реализация популярного шаблона проектирования pub-sub в messaging.
У отправителя есть два поля: заголовок и текст сообщения, а также кнопка для отправки сообщения в тему. Мы создали тему под названием “предложения”, которая будет оповещать пользователей каждый раз, когда появляется новое предложение.
Принимающее приложение было создано с использованием стандартного кода Android, но у него есть слушатель, подписанный на тему, что позволяет ему получать уведомления каждый раз, когда сообщение отправляется в тему.
Код отправителя
Давайте сначала взглянем на код на стороне отправителя. Это та часть, которая немного сложна. Нам нужно кое-что сделать, прежде чем мы начнем. Сначала перейдите в консоль Firebase и получите Ключ сервера на вкладке Облачных сообщений в настройках проекта. Это будет необходимо для проверки подлинности ваших запросов, и его необходимо добавить в заголовок запроса.
Файл Констант
public class Constants { public static final String SERVER_KEY = "ENTER YOUR SERVER KEY HERE"; public static final String BASE_URL = "https://fcm.googleapis.com"; public static final String CONTENT_TYPE = "application/json"; }
Просмотр Constants.java в контексте на/| Этот ИИ
Строка 1-5: Создайте класс с именем Constants и сохраните в нем все значения констант. Здесь у нас есть ключ сервера, тип содержимого и базовый URL-адрес для обмена сообщениями Firebase Cloud. Не забудьте заменить ключ сервера значением из вашей консоли Firebase.
Классы моделей
public class Notification { private String title; private String body; public Notification(String title, String body) { this.title = title; this.body = body; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } }
Просмотр Уведомления.java в контексте Quod AI
Строка 1-21: Теперь мы создадим все классы моделей. Тот, который требуется для данных уведомления, и тот, который требуется для ответа. Класс уведомлений, приведенный ниже, содержит поля, заголовок и тело, а также конструктор и средства получения/установки. Это довольно простой Java-код.
public class PushNotification { private Notification notification; private String to; public PushNotification(Notification notification, String to) { this.notification = notification; this.to = to; } public PushNotification(Notification data) { this.notification = data; } public Notification getNotification() { return notification; } public void setNotification(Notification data) { this.notification = data; } public String getTo() { return to; } public void setTo(String recipient) { this.to = recipient; } }
Просмотр Пушнотификация.java в контексте по адресу Этот ИИ
Строка 1-24: Далее у нас есть класс Push-уведомлений, который является фактическим классом, который мы будем использовать для перехода к теме. Здесь у нас есть поле класса Notification и строковое поле “кому”, которое обозначает получателя или тему, на которую мы хотим отправить сообщение.
Теперь мы создадим интерфейс для вызова API. Мы будем использовать библиотеку Retrofit в Android для выполнения вызовов API. Retrofit – это легкий и очень простой в использовании HTTP-клиент, доступный для Android и Java. Все, что вам нужно, чтобы начать его использовать, – это добавить зависимость в файл build.gradle. Вы можете прочитать больше об этом на их официальном сайте, приведенном выше, чтобы получить более полное представление о библиотеке. Всегда рекомендуется читать документацию при использовании библиотеки для вашего приложения.
Давайте подробнее рассмотрим интерфейс API уведомлений.
public interface NotificationAPI { @Headers({"Authorization: key=" + Constants.SERVER_KEY, "Content-Type:" + Constants.CONTENT_TYPE}) @POST("fcm/send") Call postNotification(@Body PushNotification data); }
Просмотр NotificationAPI.java в контексте Quod AI
Строка 1-5: Давайте пройдемся строка за строкой. Первая строка @Headers переопределяет заголовки по умолчанию и добавляет ключ сервера, который мы получили ранее, и задает тип содержимого как application/json. @post аннотация означает, что это будет post-запрос, а значение в скобках показывает конечную точку. Затем у нас есть фактическое имя метода, которое возвращает объект ответа (определенный выше), когда мы передаем объект Pushnotification в теле на сервер.
Сведение всего этого воедино в Основной деятельности
public static final String TOPIC = "/topics/deals"; Button sendButton = findViewById(R.id.send); EditText titleText = findViewById(R.id.title); EditText contentText = findViewById(R.id.content); sendButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String title = titleText.getText().toString(); String content = contentText.getText().toString(); if(!title.isEmpty() && !content.isEmpty()){ Notification message = new Notification(title, content); PushNotification data = new PushNotification(message, TOPIC); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constants.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); NotificationAPI apiService = retrofit.create(NotificationAPI.class); Call call = apiService.postNotification(data); call.enqueue(new Callback() { @Override public void onResponse(Call call, retrofit2.Response response) { if (!response.isSuccessful()) { Log.d(TAG, String.valueOf(response.code())); return; } titleText.setText(""); contentText.setText(""); Toast.makeText(MainActivity.this, "Message Pushed", Toast.LENGTH_SHORT).show(); } @Override public void onFailure(Call call, Throwable t) { Log.d(TAG, t.getMessage());
Просмотр MainActivity.java в контексте на Этот ИИ
Строка 1: Мы создали тему под названием “сделки” в нашем коде, и считается хорошей практикой добавлять к ней слово “темы”.
Строка 3-5: Сначала нам нужно получить все текстовые поля и кнопку отправки, чтобы использовать их в приложении. Идентификатор упоминается в коде разработки XML, а findViewById, как следует из названия, используется для получения компонентов из соответствующего действия на основе i d.
Строка 7-8: Теперь мы установим OnClickListener на кнопку, а остальная логика, необходимая для программы, записана в этом прослушивателе.
Строка 9-12: Как только кнопка нажата, мы извлекаем значения внутри текстовых полей. Затем это используется для создания объекта, который нам нужно отправить в тему.
Строка 15-18: Далее мы создаем экземпляр Retrofit, который будет использоваться для выполнения вызова API. Мы устанавливаем baseUrl из нашего файла констант, устанавливаем фабрику конвертеров (в данном случае Gson) для преобразования из JSON в Java POJOs и наоборот.
Строка 20-21: Затем мы создаем экземпляр нашей службы API уведомлений, передавая его в модифицированный экземпляр, который мы только что создали.
Строка 22-36: При выполнении модифицированного вызова API мы можем использовать метод enqueue для асинхронного указания пользователю после получения ответа. В нашем случае мы получим сообщение о том, что сообщение было отправлено. Если произойдет сбой, в тосте будет показано исключение.
Код получателя
FirebaseMessaging.getInstance().subscribeToTopic(TOPIC) .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { String msg = ("Subscribed"); if (!task.isSuccessful()) { msg = "Couldn't subscribe to topic"; } Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Просмотр MainActivity (Приемник).java в контексте Quod AI
Строка 1-12: Получатель – это, по сути, пустое приложение для Android, подписанное на определенную тему. Он прослушивает тему, которую мы упомянули, и как только появляется новое сообщение, запускается прослушиватель и создается уведомление с использованием полезной нагрузки. Внутри Основного действия единственное, что нам нужно сделать, это подписаться на тему, которую мы создали ранее. Если все прошло успешно, мы просто выводим сообщение с надписью “Подписался”, в противном случае “Не удалось подписаться на тему”.
Класс обслуживания
public void onMessageReceived(RemoteMessage remoteMessage) { super.onMessageReceived(remoteMessage); if (remoteMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + remoteMessage.getNotification().getBody()); } if (remoteMessage.getNotification() != null) { Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); } Notification notification = new NotificationCompat.Builder(this) .setContentTitle(remoteMessage.getNotification().getTitle()) .setContentText(remoteMessage.getNotification().getBody()) .setSmallIcon(R.mipmap.ic_launcher) .build(); NotificationManagerCompat manager = NotificationManagerCompat.from(getApplicationContext()); manager.notify(123, notification);
Просмотр MyFirebaseMessagingService.java в контексте на/| Этот ИИ
Строка 4: Теперь, чтобы создать класс обслуживания. Это класс, который расширяет класс службы обмена сообщениями Firebase. Нам нужно переопределить метод onMessageReceived, чтобы вызвать уведомление.
Строка 6-10: Если размер сообщения больше 0 и если поле уведомления не равно null, мы создаем новое уведомление. Заголовок и содержимое уведомления извлекаются из сообщения, которое было перехвачено прослушивателем.
Строка 12-16: Мы также можем использовать пользовательские значки в уведомлениях, но мы также использовали сам значок приложения для уведомления.
Строка 17-18: Наконец, мы используем NotificationManagerCompat, чтобы получить applicationcontext и вывести уведомление на экран.
Сделай что-нибудь большое!
Это только начало того, что вы можете сделать с помощью push-уведомлений на Android. С Firebase Cloud Messaging так легко начать, но сложные функции, такие как обмен сообщениями в пабах, которые вы только что видели, часто упускаются из виду. Представьте себе создание приложения, которое может отправлять push-уведомления пользователям в зависимости от их близости к ресторанам о предложениях, действующих в этот день. Возможности безграничны!
Ссылки на GitHub
Ссылки на GitHub
Оригинал: “https://dev.to/quod_ai/integrating-push-notifications-with-firebase-java-api-531”