1. Wprowadzenie
W porównaniu ze starszą wersją interfejsu API FCM interfejs API FCM HTTP v1 zapewnia bezpieczniejszy model autoryzacji, który wykorzystuje krótkotrwałe tokeny dostępu. Czynności związane z generowaniem tokena dostępu do interfejsu FCM API w wersji 1 znacznie różnią się od czynności związanych ze starszym interfejsem API.
W tym laboratorium dowiesz się, jak skonfigurować klienta i serwer, aby umożliwić wysyłanie powiadomień push do aplikacji na Androida za pomocą interfejsu FCM HTTP v1 API. Wyróżnia kluczowy krok generowania danych logowania dla interfejsu API w wersji 1.
Więcej informacji znajdziesz na tych stronach:
Wymagania wstępne
- Podstawowa znajomość języka Java i tworzenia aplikacji na Androida
Czego się nauczysz
- Szczegółowe instrukcje konfiguracji po stronie klienta i serwera, które umożliwiają wysyłanie powiadomień push do aplikacji na Androida za pomocą interfejsu FCM HTTP w wersji 1
- Generowanie danych logowania do interfejsu HTTP API w wersji 1 za pomocą kont usługi
- Wysyłanie wiadomości testowych za pomocą interfejsu HTTP API w wersji 1
Czego potrzebujesz
Najnowsza stabilna wersja Android Studio
Jedno z tych urządzeń:
- fizyczne urządzenie z Androidem podłączone do komputera;
- emulator Androida (patrz Uruchamianie aplikacji w emulatorze Androida);
środowisko programistyczne Java lub edytor kodu,
2. Konfigurowanie projektu Firebase i aplikacji na Androida
Po ukończeniu tego laboratorium będziesz mieć możliwość wysyłania wiadomości do aplikacji za pomocą Firebase Cloud Messaging. Aby to zrobić, musisz najpierw utworzyć projekt Firebase. W tym laboratorium znajdziesz też aplikację na Androida zawierającą przykładowy kod do integracji z FCM.
Konfigurowanie projektu Firebase
- Aby utworzyć własny projekt Firebase na potrzeby tego kursu, wykonaj czynności opisane w sekcji „Krok 1. Utwórz projekt Firebase”.
Konfigurowanie aplikacji na Androida
Przykładowa aplikacja na Androida udostępniona w tym ćwiczeniu z programowania jest już zintegrowana z FCM. Po uruchomieniu zarejestruje się na serwerze FCM i zasubskrybuje temat. W dalszych krokach tego laboratorium wyślesz do tematu wiadomość, a Twoja aplikacja ją otrzyma.
- Pobierz przykładowy kod dla Androida umożliwiający szybkie rozpoczęcie pracy z Firebase.
- Zaimportuj projekt z https://github.com/firebase/quickstart-android/tree/master/messaging do Android Studio.
- Zarejestruj aplikację w konsoli Firebase. Nazwa aplikacji to
com.google.firebase.quickstart.fcm
. Zarejestruj tę aplikację w projekcie Firebase, wykonując czynności opisane w sekcji „Krok 2. Zarejestruj aplikację w Firebase”. - Wykonaj część 1 sekcji „Krok 3. Dodaj plik konfiguracyjny Firebase”, aby pobrać plik
google-services.json
i dodać go do projektu. Skompiluj i uruchom projekt.
3. Konfigurowanie serwera aplikacji
Po skonfigurowaniu aplikacji musisz pobrać przykładowy kod po stronie serwera, aby wysyłać do niej wiadomości za pomocą interfejsu FCM w wersji 1. Ten kod wczytuje dane logowania interfejsu API (opisane w następnej sekcji), aby wygenerować token dostępu. Następnie wysyła wiadomość do aplikacji za pomocą wiadomości tematycznych FCM.
- Zaimportuj początkowy kod serwera, pobierając projekt GitHub. Projekt „messaging” to projekt Java oparty na Gradle, który jest zależny od pakietu SDK firebase-admin. Ten pakiet zapewnia funkcje wysyłania wiadomości.
Więcej informacji o tym, jak serwer aplikacji powinien współpracować z FCM, znajdziesz w dokumencie Środowisko serwera i FCM.
4. Uzyskiwanie danych logowania do wersji 1
Interfejs FCM HTTP v1 API używa krótkotrwałych tokenów dostępu zgodnie z modelem zabezpieczeń OAuth2. W porównaniu ze statycznym kluczem API używanym w starszej wersji interfejsu FCM API krótkotrwały token dostępu jest mniej podatny na ryzyko wycieku danych logowania. W tej sekcji znajdziesz szczegółowe instrukcje tworzenia danych logowania do generowania tokena dostępu używanego do wywoływania interfejsu API.
- Skonfiguruj konto usługi Firebase, aby pakiet Firebase Admin SDK mógł autoryzować wywołania interfejsów FCM API. Otwórz Ustawienia projektu w konsoli Firebase i wybierz kartę Konta usługi. Aby pobrać fragment konfiguracji, kliknij Wygeneruj nowy klucz prywatny.
- W pobranym projekcie GitHub zmień nazwę pobranego pliku na
service-account.json
i skopiuj go do ścieżkimessaging/
w projekcie. - Metoda
getAccessToken()
(pokazana poniżej) w klasieMessaging.java
generuje token OAuth2, który jest ważny przez godzinę.
private static String getAccessToken() throws IOException { GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES)); googleCredentials.refresh(); return googleCredentials.getAccessToken().getTokenValue(); }
- Zmień główną metodę, aby dodać ten wiersz:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- W terminalu przejdź do katalogu projektu lub katalogu przesyłania wiadomości i wpisz:
./gradlew run -Pmessage=common-message
aby wydrukować token OAuth2.
Więcej informacji znajdziesz w artykule Autoryzowanie żądań wysyłania.
5. Wysyłanie wiadomości za pomocą interfejsu API REST
Możesz teraz wysłać wiadomość za pomocą interfejsu HTTP API w wersji 1. Wykonaj te czynności:
- Aby dodać token dostępu do nagłówka żądania HTTP:
- Dodaj token jako wartość nagłówka autoryzacji w formacie
Authorization: Bearer <access_token>
. - Wyślij żądanie HTTP do interfejsu FCM w wersji 1 za pomocą polecenia curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
Symbol $topic_name
powyżej znajdziesz w kodzie aplikacji na Androida wspomnianym w konfiguracji projektu Firebase i aplikacji na Androida. Domyślnie jest to "weather"
.
- Po pomyślnym dostarczeniu wiadomości na ekranie pojawi się powiadomienie podobne do tego na obrazie poniżej:
6. Podsumowanie
Gratulacje! Po ukończeniu tego ćwiczenia:
- Konfigurowanie projektu Firebase
- Integracja Firebase z aplikacją na Androida
- Tworzenie danych logowania do interfejsu HTTP API FCM w wersji 1
- Wysyłanie wiadomości do aplikacji za pomocą interfejsu FCM HTTP v1 API
Aby poznać zaawansowane funkcje FCM, zapoznaj się z tymi materiałami: