1. Wstęp
W porównaniu ze starszym interfejsem API FCM, interfejs API FCM HTTP v1 zapewnia bezpieczniejszy model autoryzacji przy użyciu krótkotrwałych tokenów dostępu. Kroki generowania tokena dostępu dla interfejsu API FCM v1 znacznie różnią się od kroków dla starszego interfejsu API.
To ćwiczenie z programowania przeprowadzi Cię przez proces konfiguracji po stronie klienta i serwera, aby umożliwić wysyłanie powiadomień wypychanych do aplikacji na Androida przy użyciu interfejsu API FCM HTTP v1. Podkreśla kluczowy etap generowania poświadczeń dla interfejsu API w wersji 1.
Więcej informacji można znaleźć na stronie:
Warunki wstępne
- Podstawowa znajomość programowania w języku Java i Android
Czego się dowiesz
- Szczegółowe kroki konfiguracji po stronie klienta i serwera, aby umożliwić wysyłanie powiadomień push do aplikacji na Androida za pomocą interfejsu API FCM HTTP v1
- Generowanie danych uwierzytelniających dla interfejsu API HTTP v1 przy użyciu kont usług
- Wysyłanie wiadomości testowych poprzez API HTTP v1
Co będziesz potrzebował
Najnowsza stabilna wersja Android Studio
Jedno z następujących urządzeń:
- Fizyczne urządzenie z Androidem podłączone do Twojego komputera
- Emulator Androida (zobacz Uruchamianie aplikacji na emulatorze Androida )
Wybrane środowisko programistyczne Java lub edytor kodu
2. Konfiguracja projektu Firebase i aplikacji na Androida
Po zakończeniu zajęć z kodowania będziesz mógł wysyłać wiadomości do swojej aplikacji za pomocą Firebase Cloud Messaging. Zanim to zrobisz, musisz utworzyć projekt Firebase. To ćwiczenie z programowania udostępnia także aplikację na Androida zawierającą przykładowy kod do integracji z FCM.
Konfiguracja projektu Firebase
- Wykonaj „Krok 1: Utwórz projekt Firebase ”, aby utworzyć własny projekt Firebase na potrzeby tych zajęć z programowania.
Konfiguracja aplikacji na Androida
Przykładowa aplikacja na Androida dostarczona w tym laboratorium z programowania jest już zintegrowana z FCM. Po uruchomieniu zarejestruje się na serwerze FCM i zasubskrybuje temat. W późniejszych etapach tego ćwiczenia z kodowania wyślesz wiadomość tematyczną do tematu, a Twoja aplikacja ją otrzyma.
- Pobierz przykładowy przewodnik szybkiego startu Firebase na Androida .
- Zaimportuj projekt pod 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 swoim projekcie Firebase, wykonując czynności opisane w sekcji „Krok 2: Zarejestruj aplikację w Firebase ”. - Wykonaj część 1 „Krok 3: Dodaj plik konfiguracyjny Firebase ”, aby pobrać plik
google-services.json
i dodać go do swojego projektu. Zbuduj i uruchom projekt.
3. Skonfiguruj serwer aplikacji
Po skonfigurowaniu aplikacji musisz pobrać przykładowy kod po stronie serwera, który umożliwi wysyłanie wiadomości do aplikacji przy użyciu interfejsu API FCM v1. Ten kod ładuje poświadczenia API (opisane w następnej sekcji), aby wygenerować token dostępu. Następnie wysyła wiadomość do Twojej aplikacji za pomocą wiadomości tematycznych FCM.
- Zaimportuj kod serwera startowego, pobierając projekt Github . Projekt „wiadomości” to projekt Java oparty na Gradle i zależny od pakietu SDK firebase-admin , który zapewnia funkcjonalność wysyłania wiadomości.
Więcej szczegółów na temat tego, jak serwer aplikacji powinien współpracować z FCM, można znaleźć w dokumencie Twoje środowisko serwerowe i FCM .
4. Uzyskaj dane uwierzytelniające v1
Interfejs API FCM HTTP v1 wykorzystuje krótkotrwałe tokeny dostępu zgodnie z modelem zabezpieczeń OAuth2. W porównaniu ze statycznym kluczem API używanym w starszym interfejsie API FCM, krótkotrwały token dostępu jest mniej podatny na ryzyko wycieku danych uwierzytelniających. W tej sekcji szczegółowo opisano kroki tworzenia poświadczeń służących do generowania tokenu dostępu używanego podczas wywoływania interfejsu API.
- Skonfiguruj konto usługi Firebase, aby pakiet Firebase Admin SDK autoryzował wywołania interfejsów API FCM. Otwórz Ustawienia projektu w konsoli Firebase i wybierz zakładkę Konta usług . Kliknij Wygeneruj nowy klucz prywatny , aby pobrać fragment konfiguracji.
- W pobranym projekcie Github zmień nazwę pobranego pliku na
service-account.json
i skopiuj go domessaging/
ścieżki projektu. - Metoda
getAccessToken()
(pokazana poniżej) w klasieMessaging.java
generuje token OAuth2 ważny przez 1 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ń metodę główną, dodając następujący wiersz:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Przejdź do katalogu messaging/project w swoim terminalu i wpisz:
./gradlew run -Pmessage=common-message
aby wydrukować token OAuth2.
Więcej informacji znajdziesz w Autoryzuj żądania wysłania .
5. Wyślij wiadomość za pomocą REST API
Teraz możesz wysłać wiadomość za pośrednictwem interfejsu API HTTP v1. Wykonaj poniższe kroki:
- Aby dodać token dostępu do nagłówka żądania HTTP:
- Dodaj token jako wartość nagłówka Authorization w formacie
Authorization: Bearer <access_token>
- Wykonaj żądanie HTTP do interfejsu API FCM v1 za pomocą 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
Powyższą $topic_name
można znaleźć w kodzie aplikacji na Androida wspomnianym w projekcie Firebase i konfiguracji aplikacji na Androida. Domyślnie jest to "weather"
.
- Po pomyślnym dostarczeniu wiadomości na ekranie powinno pojawić się powiadomienie podobne do poniższego obrazka:
6. Wniosek
Gratulacje! Pomyślnie ukończyłeś ćwiczenia z kodowania, aby:
- Skonfiguruj projekt Firebase
- Zintegruj Firebase z aplikacją na Androida
- Utwórz poświadczenia dla interfejsu API FCM HTTP v1
- Wyślij wiadomość do swojej aplikacji za pośrednictwem interfejsu API FCM HTTP v1
Aby zapoznać się z zaawansowanymi funkcjami oferowanymi przez FCM, przydatne są następujące odniesienia: