В этой статье будет полное описание действий по интеграции вашего Android приложения c Firebase и подключения Firebase Cloud Messaging. Разберем немного теории. 

Зачем нам вообще нужен Firebase?

Firebase – это платформа для разработчиков, предоставляющая им множество различных возможностей и функций. С помощью этой платформы, вы можете добавить, например, аналитику, отправку пуш уведомлений, подключение удаленной базы данных и тому подобное, в зависимости от ваших нужд. Подключение Firebase Cloud Messaging и позволяем нам создавать рассылку уведомлений, обычных пуш уведомлений, так и уведомлений внутри приложения. 

Чтобы подключить пуши, вначале нам надо интегрировать приложение с обычным Firebase.

  1. Переходим по ссылке Firebase | Google’s Mobile and Web App Development Platform.

Интеграция Android приложения с Firebase Cloud Messaging

Рис. 1 Главная страница Firebase

2. Нажимаем начать (Get started) и видим все свои проекты. Нажимаем кнопку Создать проект (Add project). Теперь нам нужно указать имя нашего проекта, и отключить Google Analytics. Ждем создания нашего нового проекта.

Интеграция Android приложения с Firebase Cloud Messaging

Рис. 2 Имя нового проекта

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

Интеграция Android приложения с Firebase Cloud Messaging

Рис. 3 Главная страница нашего проекта

4. Нам обязательно нужно указать пакет нашего приложения (com.package.example), а также опционально добавить название и сертификат sha-1. После этого для нашего приложения будет сгенерирован специальный файл, поэтому пакет приложения указывайте очень внимательно. Если укажете неправильно (даже указав один лишний пробел), то вся интеграция работать не будет.

Интеграция Android приложения с Firebase Cloud Messaging

Рис. 4 Регистрация приложения

5. Скачиваем созданный файл и добавляем его в папку app, нашего проекта.

Интеграция Android приложения с Firebase Cloud Messaging

Рис. 5 Добавление файла google-services.json

6. Добавляем все зависимости, которые Firebase указывает для нас и ждем, когда Android Studio все скачает.

7. Добавляем новый сервис в файле Android Manifest 

<service>

            android:name="com.gidbet.dice.MyFirebaseMessagingService"

            android:exported="false">

            <intent-filter>

                <action android:name="com.google.firebase.MESSAGING_EVENT" />

            </intent-filter>

        </service>

8. И  теперь создаем в нашем проекте сам сервис: 

public class MyFirebaseMessagingService extends FirebaseMessagingService {

@Override

public void onMessageReceived(RemoteMessage remoteMessage) {

    // ...

    // TODO(developer): Handle FCM messages here.

    // Not getting messages here? See why this may be: https://goo.gl/39bRNJ

    System.out.println("From: " + remoteMessage.getFrom());

    // Check if message contains a notification payload.

    if (remoteMessage.getNotification() != null) {

        System.out.println("Message Notification Body: " + remoteMessage.getNotification().getBody());

    }

    // Also if you intend on generating your own notifications as a result of a received FCM

    // message, here is where that should be initiated. See sendNotification method below.

    sendNotification(remoteMessage.getFrom(), remoteMessage.getNotification().getBody());

    sendNotification(remoteMessage.getNotification().getBody());

}

private void sendNotification(String from, String body) {

    new Handler(Looper.getMainLooper()).post(new Runnable() {

        @Override

        public void run() {

            Toast.makeText(MyFirebaseMessagingService.this.getApplicationContext(), from + " -> " + body,Toast.LENGTH_SHORT).show();

        }

    });

}

private void sendNotification(String messageBody) {

    Intent intent = new Intent(this, MainActivity.class);

    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,

            PendingIntent.FLAG_ONE_SHOT);

    String channelId = "My channel ID";

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    NotificationCompat.Builder notificationBuilder =

            new NotificationCompat.Builder(this, channelId)

                    .setSmallIcon(R.drawable.ic_launcher_background)

                    .setContentTitle("My new notification")

                    .setContentText(messageBody)

                    .setAutoCancel(true)

                    .setSound(defaultSoundUri)

                    .setContentIntent(pendingIntent);

    NotificationManager notificationManager =

            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    // Since android Oreo notification channel is needed.

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

        NotificationChannel channel = new NotificationChannel(channelId,

                "Channel human readable title",

                NotificationManager.IMPORTANCE_DEFAULT);

        notificationManager.createNotificationChannel(channel);

    }

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());

}

}.

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

Теперь мы владеем навыком подключения Firebase и пушей к нашим Android приложениям. С помощью Firebase мы, или кто-то другой, у кого есть доступ, можем запускать кампании по рассылке пуш уведомлений и указывать для них различный текст.

А про различные интеграции и улучшения ваших приложений читайте на нашем Телеграмм-канале: https://t.me/quantummedia1

Loading