DEV Community

Cover image for Jak wysyłać powiadomienia Firebase Push na Androida?

Jak wysyłać powiadomienia Firebase Push na Androida?

Podczas tworzenia aplikacji mobilnych trudno jest wymyślić przypadek użycia, w którym nie trzeba powiadamiać użytkowników za pomocą alertów lub powiadomień push.

Przed dalszą lekturą mamy również dedykowane demo i samouczek dotyczący powiadomień push zarówno na Andorid, jak i iOS

Rozważmy na przykład następujący scenariusz: Tworzysz aplikację sportową działającą w czasie rzeczywistym, która przekazuje swoim użytkownikom krytyczne wiadomości podczas meczu. Kluczową funkcją aplikacji byłoby wysyłanie niezawodnych mobilnych powiadomień push do użytkowników, gdy tylko ich ulubiona drużyna zdobędzie bramkę.

Każdy mobilny system operacyjny zapewnia własne rozwiązanie dla natywnych powiadomień push, więc ich integracja z aplikacją może być trudna. W systemie Android mechanizmem używanym przez natywne aplikacje do powiadomień push są powiadomienia Firebase Cloud Messaging (FCM). PubNub poszedł o krok dalej i zintegrował wykorzystanie powiadomień Firebase Cloud Messaging z platformą komunikacji w czasie rzeczywistym PubNub.

Gdy aplikacja jest na pierwszym planie, kanały PubNub wykonają świetną robotę, dostarczając strumienie danych w czasie rzeczywistym. Trudny przypadek ma miejsce, gdy aplikacja działa w tle, gdy użytkownik ma zablokowany telefon, a zwłaszcza gdy użytkownik ma przerywany dostęp do połączenia internetowego przez WiFi lub LTE. Aby poradzić sobie z tymi trudnymi przypadkami, najłatwiejszym rozwiązaniem jest wdrożenie powiadomień push Firebase.

Przegląd sposobu wysyłania powiadomień Firebase Push do systemu Android przy użyciu FCM

FCM to bezpłatna usługa Google, która pozwala użytkownikom niezawodnie dostarczać powiadomienia push Firebase bez żadnych kosztów.

Za pomocą FCM można wysyłaćdwa rodzaje wiadomości do aplikacji:

  • Wiadomości powiadomień, czasami nazywane "wiadomościami wyświetlanymi". Są one obsługiwane automatycznie przez FCM SDK.
  • Komunikaty*danych*, które są obsługiwane przez aplikację kliencką.
  • Komunikaty powiadomień zawierają wstępnie zdefiniowany zestaw kluczy widocznych dla użytkownika i mogą zawierać opcjonalny ładunek danych.
  • Komunikaty danych zawierają tylko niestandardowe pary klucz-wartość zdefiniowane przez użytkownika.
  • Maksymalny ładunek dla obu typów wiadomości wynosi 4 KB.

Możesz wysłać wiadomość z danymi, wiadomość z powiadomieniem lub obie, ale ma to znaczenie, jeśli wysyłasz tylko wiadomość z danymi, ponieważ Twój kod jest wyraźnie odpowiedzialny za wyświetlenie powiadomienia push. Wiadomość z powiadomieniem zostanie automatycznie obsłużona przez FCM w celu wyświetlenia ładunku powiadomienia.

Powinieneś używać komunikatów powiadomień, gdy chcesz, aby Firebase obsługiwał wyświetlanie powiadomień w imieniu aplikacji klienckiej i powinieneś używać komunikatów danych, gdy chcesz przetwarzać wiadomości w aplikacji klienckiej. Możesz wysłać powiadomienie zawierające opcjonalny ładunek danych, a FCM zajmie się wyświetlaniem ładunku powiadomienia, podczas gdy aplikacja kliencka zajmie się ładunkiem danych.

System FCM uwzględnia 3 strony:

  • Aplikację kliencką.
  • Serwery FCM Google (backend)
  • Serwer push innej firmy.

Gdy użytkownik instaluje aplikację, musi się ona zarejestrować, aby włączyć FCM. Oto przepływ pracy FCM dla wysyłania powiadomień:

  • Serwer push innej firmy wysyła powiadomienie push do serwerów FCM Google. Jest to część, którą PubNub może zastąpić i uprościć.
  • Serwery te przekazują wiadomość do wszystkich zarejestrowanych aplikacji mobilnych.
  • Wiadomości są przechowywane dla urządzeń, które są offline.
  • Gdy tylko urządzenie powróci do trybu online, serwery FCM przekazują wiadomość oczekującą w kolejce.
  • Wiadomości są odbierane na urządzeniu użytkownika i prezentowane zgodnie z implementacją specyficzną dla platformy.

Jak wysłać powiadomienie Firebase Push na Androida za pomocą PubNub

Jeśli korzystasz z PubNub Real-time Messaging, już komunikujesz się w czasie rzeczywistym ze wszystkimi swoimi urządzeniami - ale jeśli chcesz wysyłać powiadomienia push dla natywnego systemu Android, FCM jest świetnym sprzymierzeńcem.Mobile Push Notification Powered By PubNub

Jeśli twoja aplikacja jest przeznaczona na wiele platform, PubNub ułatwia ci życie, obsługując Apple Push Notification Service (APN) i Firebase po wyjęciu z pudełka. Nawet jeśli nie obsługujesz jeszcze wielu platform, korzystanie z obsługi PubNub dla FCM usprawni Twój kod dzięki wykorzystaniu jednego zestawu bibliotek dla PubNub Data Streams oraz powiadomień Firebase.

PubNub ma łatwą integrację z FCM. Kanał PubNub zastępuje serwery innych firm, które wysyłają powiadomienia do serwerów FCM Google. Każdy zarejestrowany punkt końcowy może wysyłać powiadomienia push do podłączonych urządzeń.

Pozwala to aplikacji na błyskawiczne wysyłanie powiadomień push do urządzeń zarejestrowanych na określonych kanałach. Łączy w sobie natywny interfejs Android Notification API firmy Google z siecią strumieni danych w czasie rzeczywistym PubNub. Powiadomienia push w czasie rzeczywistym będą natywnie rozumiane przez każde urządzenie z systemem Android. Jeśli masz już FCM w swojej aplikacji i rozważasz użycie PubNub, nie będziesz musiał prawie nic zmieniać w swojej aplikacji, najprawdopodobniej usuwając kod!

Wracając do scenariusza aplikacji z wiadomościami sportowymi, krytyk sportowy może wysłać wynik w czasie rzeczywistym ze swojego telefonu i uruchomić powiadomienie push na pozostałych urządzeniach odbiorców. PubNub sprawia, że jest to proste - dodatkowe serwery, które trzeba obsługiwać, można wykluczyć z równania i dzięki automatycznemu skalowaniu zarządzanemu przez PubNub!

Firebase Cloud Messaging (FCM) to rebranding Google Cloud Messaging (GCM) i nie ma żadnej funkcjonalnej różnicy w jego obsłudze w PubNub. FCM powinien być używany zamiast tego, jeśli widzisz odniesienia do GCM.

Pierwsze kroki z Firebase Push Notifications z PubNub

Chcesz pobrać ukończony projekt powiadomień push Firebase? https://github.com/PubNubDevelopers/Android-Push-Notifications

W tym samouczku utworzymy nową aplikację na Androida, skonfigurujemy powiadomienia push Firebase, włączymy mobilne powiadomienia push PubNub i skonfigurujemy PubNub Android SDK do odbierania mobilnych powiadomień push. Najpierw musisz założyćzawsze darmowe konto PubNub. Po zarejestrowaniu się utwórz nową aplikację, a następnie uzyskaj unikalne klucze PubNub z panelu administracyjnego PubNub. Zapisz klucz publikowania i klucz subskrypcji, aby móc ich użyć później.

Utwórz nową aplikację na Androida

Pomiń tę sekcję, jeśli masz już aplikację, której chcesz używać z FCM i PubNub.

Zainstaluj Java SE Development Kit (JDK 8 lub nigdy).

Pobierz i zainstaluj Android Studio.

W oknie Welcome to Android Studio kliknij "Start a new Android Studio project".

Ustaw nazwę aplikacji, domenę firmy i możesz zmienić lokalizację projektu. Jeśli chcesz napisać aplikację w Kotlin lub Flutter, zaznacz odpowiednie pole wyboru. Zanotuj nazwę pakietu, będziesz jej potrzebować później. Pozostałe opcje pozostaw bez zmian. Kliknij "Dalej".

Create New Android App

Ustaw minimalne SDK na "API23: Android 6.0 (Mashmallow)". Kliknij "Dalej".

Wybierz opcję "Empty Activity". Kliknij "Dalej". Zachowaj wartości domyślne i kliknij "Zakończ".

Dodawanie Firebase Cloud Messaging do tworzenia powiadomień w czasie rzeczywistym

Utwórz lub zaloguj się do konta Firebase.

Kliknij "Dodaj projekt" w konsoli Firebase, aby utworzyć projekt Firebase.

Add Project to Firebase

Ustaw nazwę projektu i lokalizacje.

Add a project to firebase

Następnie dodaj firebase do aplikacji na Androida.

Add Firebase to App

Wprowadź nazwę pakietu i pseudonim dla swojej aplikacji. Nazwę pakietu aplikacji można znaleźć na górze pliku "android/app/src/main/java/com/[YourAppName]/MainApplication.java". Pomiń SHA-1 (nie jest potrzebny w tym samouczku). Kliknij "Zarejestruj aplikację".

Pobierz plik google-services.json do katalogu głównego modułu aplikacji na Androida. Nie dodawaj Firebase SDK. Przejdź do konsoli Firebase i kontynuuj kroki w tym samouczku, aby dodać Firebase SDK i PubNub SDK do swojej aplikacji.

Download Config File For Android App

Przejdź do panelu administracyjnego PubNub, wybierz aplikację, a następnie wybierz zestaw kluczy.

Przewiń w dół do "Mobile Push Notifications", włącz dodatek Push Notifications (jeśli nie został jeszcze włączony) i wprowadź klucz API dla właśnie utworzonej aplikacji w konsoli Firebase. Możesz znaleźć swój klucz API (wymieniony jako klucz serwera w konsoli Firebase), przechodząc do "Przeglądu projektu" na lewym pasku bocznym, klikając przycisk menu kebob ("⋮")znajdujący się w prawym górnym rogu metryk aplikacji, klikając "Ustawienia" i wybierając kartę "Wiadomości w chmurze".

Konfiguracja FCM i PubNub dla mobilnych powiadomień push Firebase

Edytuj plik build.gradle (/build.gradle) na poziomie projektu i dodaj następujący wiersz:

buildscript {
  dependencies {
    // Add this line
    classpath 'com.google.gms:google-services:4.0.1'
  }
}
Enter fullscreen mode Exit fullscreen mode

Po jej dodaniu pojawi się żółty komunikat z prośbą o zsynchronizowanie projektu. Zignoruj go w tej chwili.

Edytuj plik build.gradle na poziomie aplikacji (//build.gradle) i dodaj następujące elementy:

dependencies {
  // Add this line.
  implementation 'com.google.firebase:firebase-core:16.0.1'
  // Firebase Messaging library for sending push notifications. Add this line.
  implementation 'com.google.firebase:firebase-messaging:17.3.3'
  // PubNub Android SDK. Add this line.
  implementation group: 'com.pubnub', name: 'pubnub-gson', version: '4.20.0'
}
...
// Add to the bottom of the file
apply plugin: 'com.google.gms.google-services'
Enter fullscreen mode Exit fullscreen mode

Kliknij "Synchronizuj teraz" na pasku, który pojawi się w Android Studio.

Android Studio Sync Message

Edytuj plik MainActivity.java, aby zainicjować PubNub Android SDK. Musisz także utworzyć kanały powiadomień dla Android API poziomu 26+, aby wyświetlać powiadomienia push.

package com.pubnub.hellopush;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import com.pubnub.api.PNConfiguration;
import com.pubnub.api.PubNub;
public class MainActivity extends AppCompatActivity {
    public static PubNub pubnub; // PubNub instance
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initPubnub();
        createChannel();
    }
    // Creates PubNub instance with your PubNub credentials. https://admin.pubnub.com/signup
    // This instance will be used when we need to create connection to PubNub.
    private void initPubnub() {
        PNConfiguration pnConfiguration = new PNConfiguration();
        pnConfiguration.setPublishKey("YOUR_PUB_KEY_HERE");
        pnConfiguration.setSubscribeKey("YOUR_SUB_KEY_HERE");
        pnConfiguration.setSecure(true);
        pubnub = new PubNub(pnConfiguration);
    }
    // Creates notification channel.
    private void createChannel() {
        // Notification channel should only be created for devices running Android API level 26+. 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            NotificationChannel chan1 = new NotificationChannel(
                    "default",
                    "default",
                    NotificationManager.IMPORTANCE_NONE);
            chan1.setLightColor(Color.TRANSPARENT);
            chan1.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
            notificationManager.createNotificationChannel(chan1);
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Pobierz unikalne klucze PubNub z panelu administracyjnego PubNub. Zastąp "YOUR_PUB_KEY_HERE" i "YOUR_SUB_KEY_HERE" kluczami z panelu administracyjnego PubNub.

Musisz dodać usługę, aby uzyskać token urządzenia i metodę wysyłania tokena do serwera rejestracji (PubNub). Korzystając z PubNub Android SDK, należy powiązać kanał z tokenem rejestracyjnym. Aby móc przetwarzać komunikaty danych lub obsługiwać wyświetlanie komunikatów powiadomień na pierwszym planie, należy również dodać usługę, która rozszerza FirebaseMessagingService.

W eksploratorze projektu rozwiń katalogi "app > java > [nazwa pakietu]". Następnie kliknij prawym przyciskiem myszy i wybierz "New > Java Class". Nazwij klasę "MyFirebaseMessageService.Java".

package com.pubnub.hellopush;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.pubnub.api.callbacks.PNCallback;
import com.pubnub.api.enums.PNPushType;
import com.pubnub.api.models.consumer.PNStatus;
import com.pubnub.api.models.consumer.push.PNPushAddChannelResult;
import java.util.Arrays;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
    private static final String TAG = "FirebaseService";
    @Override
    public void onNewToken(String token) {
        super.onNewToken(token);
        Log.d(TAG,"NEW_TOKEN: "+token);
        sendRegistrationToPubNub(token);
    }
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        // If the application is in the foreground handle or display both data and notification FCM messages here.
        // Here is where you can display your own notifications built from a received FCM message.
        super.onMessageReceived(remoteMessage);
        Log.d(TAG, "From: " + remoteMessage.getFrom());
        if (remoteMessage.getData().size() > 0) {
            Log.d(TAG, "Message data payload: " + remoteMessage.getData());
        }
        if (remoteMessage.getNotification() != null) {
            Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
        }
        // displayNotification(remoteMessage.getNotification().getBody());
    }
    private void sendRegistrationToPubNub(String token) {
        // Configure PubNub mobile push notifications.
        MainActivity.pubnub.addPushNotificationsOnChannels()
            .pushType(PNPushType.GCM)
            .channels(Arrays.asList("HelloPush", "TestPushChannel"))
            .deviceId(token)
            .async(new PNCallback<PNPushAddChannelResult>() {
                @Override
                public void onResponse(PNPushAddChannelResult result, PNStatus status) {
                    Log.d("PUBNUB", "-->PNStatus.getStatusCode = " + status.getStatusCode());
                }
            });
    }
}
Enter fullscreen mode Exit fullscreen mode

Dodaj klasę do pliku AndroidManifest.xml.

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

Dodaj te uprawnienia w pliku AndroidManifest.xml przed tagiem <application>.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Enter fullscreen mode Exit fullscreen mode

Wysyłanie mobilnych powiadomień push z PubNub

Zbuduj i uruchom swoją aplikację na urządzeniu z systemem Android lub za pomocą emulatora Androida.

Możesz wysyłać mobilne powiadomienia push za pomocą PubNub, publikując wiadomość na kanale lub kanałach, do których dodano urządzenia. Ważne jest, aby pamiętać, że urządzenia nie muszą subskrybować kanału, aby otrzymywać powiadomienia dla tego kanału. Urządzenia muszą jedynie zarejestrować się w kanale dla powiadomień push, a następnie będą otrzymywać powiadomienia push dla wszystkich wiadomości, które mają klucze powiadomień push dla tego typu urządzenia.

PubNub Debug Client

  • Powiązane urządzenia FCM będą otrzymywać tylko dane w ramach klucza pn_gcm.
  • Natywni subskrybenci PubNub otrzymają cały dosłowny obiekt, w tym klucze powiadomień.

W tym samouczku urządzenie zostało zarejestrowane w kanale "Notifications". Wszelkie wiadomości wysyłane do tego kanału z kluczami pn_gcm będą wysyłane jako mobilne powiadomienia push do zarejestrowanych urządzeń.

Najprostszym sposobem na przetestowanie mobilnych powiadomień push jest wysłanie ich z PubNub Debug Console z poziomu panelu administracyjnego PubNub.

Przejdź do pulpitu administratora PubNub, wybierz aplikację, a następnie wybierz zestaw kluczy.

Kliknij "Debug Console" i utwórz klienta z "Default Channel" ustawionym na Notifications.

Za pomocą właśnie utworzonego klienta możesz wysłać powiadomienie na swoje urządzenie, wysyłając wiadomość zawierającą klucze pn_gcm.

Wyślij powiadomienie Android push za pomocą klucza powiadomienia:

{"pn_gcm":{"notification":{"body":"Hello World."}}}
Enter fullscreen mode Exit fullscreen mode

Hello World Android Push NotificationZapoznaj się z przewodnikiem rozwiązywania problemów, jeśli masz problemy z wysyłaniem mobilnych powiadomień push.

Spis treści

Omówienie sposobu wysyłania powiadomień Firebase Push na Androida za pomocą FCMJakwysłać powiadomienie Firebase Push na Androida za pomocą PubNubPoczątekkorzystania z powiadomień Firebase Push za pomocą PubNubUtwórznową aplikację na AndroidaDodanieFirebase Cloud Messaging do tworzenia powiadomień w czasie rzeczywistymKonfiguracjaFCM i PubNub dla mobilnych powiadomień Firebase PushWysyłanie mobilnychpowiadomień Push z PubNub

Jak PubNub może ci pomóc?

Ten artykuł został pierwotnie opublikowany na PubNub.com

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Podstawą naszej platformy jest największa w branży i najbardziej skalowalna sieć komunikacyjna w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub

Sprawdź Live Tour, aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację

Załóż konto PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij

Dokumenty PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub zestawu SDK.

Top comments (0)