1. Wprowadzenie
W porównaniu ze starszą wersją interfejsu API FCM interfejs FCM HTTP v1 API zapewnia bezpieczniejszy model autoryzacji przy użyciu tokenów dostępu o krótkim czasie ważności. Etapy generowania tokena dostępu dla interfejsu API FCM w wersji 1 znacznie się różnią od tych w starszym interfejsie API.
Dzięki temu ćwiczeniu w Codelabs dowiesz się, jak skonfigurować po stronie klienta i serwera, aby umożliwić wysyłanie powiadomień push do aplikacji na Androida za pomocą interfejsu API FCM HTTP v1. Wyróżniona jest tu kluczowy etap generowania danych logowania dla interfejsu API w wersji 1.
Więcej informacji można znaleźć na stronie:
Wymagania wstępne
- Podstawowa wiedza o programowaniu w języku Java i Androidzie
Czego się nauczysz
- Szczegółowe instrukcje konfiguracji po stronie klienta i serwera, dzięki którym możliwe będzie wysyłanie powiadomień push do aplikacji na Androida przy użyciu interfejsu API FCM HTTP w wersji 1.
- Generowanie danych uwierzytelniających dla interfejsu API HTTP w wersji 1 za pomocą kont usługi
- Wysyłanie wiadomości testowych przez interfejs API HTTP 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 (zobacz Uruchamianie aplikacji przy użyciu emulatora Androida).
dowolne środowisko programistyczne Java lub edytor kodu;
2. Konfiguracja projektu Firebase i aplikacji na Androida
Po zakończeniu modułu dotyczącego programowania będziesz mieć możliwość wysyłania wiadomości do swojej aplikacji przy użyciu Komunikacji w chmurze Firebase (FCM). Zanim to zrobisz, musisz utworzyć projekt Firebase. W ramach tego ćwiczenia w Codelabs dostępna jest też aplikacja na Androida zawierająca przykładowy kod do integracji z FCM.
Konfigurowanie projektu Firebase
- Wykonaj czynności opisane w sekcji „Krok 1. Utwórz projekt Firebase”. aby utworzyć własny projekt Firebase na potrzeby tego ćwiczenia z programowania.
Konfiguracja aplikacji na Androida
Przykładowa aplikacja na Androida dostępna w tym ćwiczeniu z programowania jest już zintegrowana z FCM. Po rozpoczęciu zostanie ono zarejestrowane na serwerze FCM i zasubskrybuje temat. W kolejnych krokach tego ćwiczenia w Codelabs wyślesz wiadomość z tematu do tematu, a aplikacja ją otrzyma.
- Pobierz przykładowy krótki przewodnik po Firebase na Androida.
- Zaimportuj projekt ze strony 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 procedury „Krok 3. Dodaj plik konfiguracji Firebase”. aby pobrać
google-services.json
i dodać go do projektu. skompilować i uruchomić projekt;
3. Konfigurowanie serwera aplikacji
Po skonfigurowaniu aplikacji musisz pobrać przykładowy kod po stronie serwera służący do wysyłania wiadomości do aplikacji przy użyciu interfejsu API FCM w wersji 1. Wczytuje on dane logowania interfejsu API (opisane w następnej sekcji), aby wygenerować token dostępu. Następnie wysyła wiadomość do Twojej aplikacji za pomocą wiadomości tematycznych w FCM.
- Zaimportuj kod serwera startowego, pobierając projekt GitHub. Komunikat projekt to oparty na Gradle projekt Java, który korzysta z pakietu SDK firebase-admin z funkcjami wysyłania wiadomości.
Więcej informacji o tym, jak serwer aplikacji powinien współpracować z FCM, znajdziesz w dokumencie Twoje środowisko serwera i FCM.
4. Pobierz dane logowania w wersji 1
Interfejs FCM HTTP v1 API korzysta z tokenów dostępu o krótkim czasie ważności zgodnie z modelem zabezpieczeń OAuth2. W porównaniu ze statycznym kluczem interfejsu API używanym w starszym interfejsie API FCM token dostępu przez krótki czas jest mniej podatny na ryzyko ujawnienia danych logowania. Ta sekcja zawiera szczegółowe instrukcje tworzenia danych logowania służących do generowania tokena dostępu używanego do wywoływania interfejsu API.
- Skonfiguruj konto usługi Firebase, aby zezwolić pakietowi SDK Firebase Admin na autoryzowanie wywołań interfejsów API FCM. W konsoli Firebase otwórz Ustawienia projektu i wybierz kartę Konta usługi. Aby pobrać fragment kodu konfiguracji, kliknij Wygeneruj nowy klucz prywatny.
- W pobranym projekcie GitHub zmień nazwę pobranego pliku na
service-account.json
i skopiuj go do ścieżkimessaging/
projektu. - Metoda
getAccessToken()
(pokazana poniżej) w klasieMessaging.java
generuje token OAuth2 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ń metodę główną, dodając ten wiersz:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Przejdź do katalogu komunikatów/ projektów w terminalu 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
Teraz możesz wysłać wiadomość przez interfejs API HTTP 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>
- Za pomocą polecenia curl wyślij żądanie HTTP do interfejsu API FCM w wersji 1:
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ższy obiekt $topic_name
można znaleźć w kodzie aplikacji na Androida wspomnianym w projekcie Firebase i w konfiguracji aplikacji na Androida. Domyślnie jest to "weather"
.
- Po dostarczeniu wiadomości na ekranie powinno pojawić się powiadomienie podobne do tego na obrazie poniżej:
6. Podsumowanie
Gratulacje! Udało Ci się ukończyć ćwiczenia z programowania, aby:
- Konfigurowanie projektu Firebase
- Integracja Firebase z aplikacją na Androida
- Tworzenie danych logowania do interfejsu API FCM HTTP w wersji 1
- Wyślij wiadomość do aplikacji, używając interfejsu FCM HTTP v1 API.
Jeśli chcesz poznać zaawansowane funkcje FCM, zapoznaj się z tymi materiałami: