Integracja Zdalnej konfiguracji z ćwiczeniami z programowania na Androidzie

1. Wprowadzenie

Ostatnia aktualizacja: 9.03.2021

Czym jest Zdalna konfiguracja Firebase?

Zdalna konfiguracja Firebase to usługa w chmurze, która pozwala zmienić działanie i wygląd aplikacji bez konieczności bezpłatnego pobierania aktualizacji przez użytkowników. Gdy używasz Zdalnej konfiguracji, tworzysz w aplikacji domyślne wartości, które kontrolują jej działanie i wygląd. Potem za pomocą konsoli Firebase lub interfejsów API backendu Zdalnej konfiguracji będzie można zastąpić domyślne wartości w aplikacji w przypadku wszystkich użytkowników aplikacji lub ich segmentów. Aplikacja kontroluje, kiedy aktualizacje są stosowane. Może też często sprawdzać dostępność aktualizacji i wdrażać je z niewielkim wpływem na wydajność.

Jak to działa?

Zdalna konfiguracja zawiera bibliotekę klienta, która obsługuje ważne zadania, takie jak pobieranie wartości parametrów i przechowywanie ich w pamięci podręcznej. Jednocześnie zapewnia Ci kontrolę nad tym, kiedy nowe wartości są aktywowane, przez co wpływa na sposób korzystania z aplikacji. Zapewnia to bezpieczeństwo korzystania z aplikacji przez kontrolowanie czasu wprowadzania zmian.

Metody get biblioteki klienta Zdalnej konfiguracji zapewniają pojedynczy punkt dostępu do wartości parametrów. Twoja aplikacja otrzymuje wartości po stronie serwera za pomocą tej samej logiki, której używa do pobierania domyślnych wartości w aplikacji. Dzięki temu możesz dodać do niej funkcje Zdalnej konfiguracji bez konieczności pisania szczegółowego kodu.

Aby zastąpić domyślne wartości w aplikacji, użyj konsoli Firebase lub backendowych interfejsów API Zdalnej konfiguracji i utwórz parametry o tych samych nazwach co parametry używane w aplikacji. W przypadku każdego parametru możesz ustawić domyślną wartość po stronie serwera, aby zastąpić domyślną wartość w aplikacji. Możesz też utworzyć wartości warunkowe, które będą zastępować domyślną wartość w aplikacji w przypadku wystąpień aplikacji, które spełniają określone warunki. Ta ilustracja pokazuje, jak ustalane są priorytety wartości parametrów w backendzie Zdalnej konfiguracji i w Twojej aplikacji:

61f12f33d2ac3133.png

Czego się nauczysz

  • Jak wdrożyć Zdalną konfigurację Firebase
  • Jak używać Zdalnej konfiguracji Firebase do zmieniania wartości bez aktualizowania aplikacji

Czego potrzebujesz

  • Najnowsza wersja Android Studio
  • konto Firebase,
  • (zalecane, ale opcjonalne) Fizyczne urządzenie z Androidem, na którym aplikacja zostanie uruchomiona.
  • Podstawowa znajomość języka Java lub Kotlin

2. Przygotowanie

(Opcjonalnie) Pobierz przykładowy kod

W ramach tego ćwiczenia w Codelabs stworzysz własną aplikację testową, ale jeśli chcesz zobaczyć i uruchomić istniejącą przykładową aplikację, możesz pobrać przykładowy kod krótkiego wprowadzenia.

Kliknij przycisk, aby pobrać cały kod do tego ćwiczenia w programowaniu:

Rozpakuj pobrany plik ZIP. Spowoduje to rozpakowanie folderu głównego o nazwie quickstart-android-master.

...lub skopiuj repozytorium GitHub z poziomu wiersza poleceń.

$ git clone https://github.com/firebase/quickstart-android.git

Repozytorium zawiera wiele folderów. Użyjemy folderu config android_studio_folder.png.

(Opcjonalnie) Zaimportuj przykładowy kod

Uruchom Android Studio i na ekranie powitalnym wybierz „Import project” (Importuj projekt). Następnie otwórz pobrany folder i wybierz folder android_studio_folder.png config. Następnie kliknij „Otwórz”.

5f90353b0b519642.png

Utwórz nowy projekt na Androida

  1. Rozpocznij nowy projekt w Android Studio
  2. Wybierz aktywność podstawową
  3. W sekcji „Skonfiguruj projekt” ekran:
  4. Nazwij swój projekt. Nazwa pakietu i miejsce zapisu zostaną wygenerowane automatycznie.
  5. Język: Java
  6. Co najmniej pakiet SDK 16

3. Dodawanie Firebase i Firebase Analytics do projektu na Androida

Tworzenie projektu Firebase

Zanim dodasz Firebase do swojej aplikacji na Androida, musisz utworzyć projekt Firebase i połączyć ją ze swoją aplikacją na iOS. Więcej informacji o projektach Firebase znajdziesz w artykule Omówienie projektów Firebase.

  1. W konsoli Firebase kliknij Dodaj projekt i wybierz lub wpisz nazwę projektu. 910158221fe46223.png

Jeśli masz już projekt Google Cloud Platform (GCP), możesz go wybrać z menu, aby dodać do niego zasoby Firebase.

  1. (Opcjonalnie) Jeśli tworzysz nowy projekt, możesz edytować jego identyfikator.

Firebase automatycznie przypisuje unikalny identyfikator do projektu Firebase. W artykule „Omówienie projektów Firebase” dowiesz się, jak Firebase używa identyfikatora projektu.

  1. Kliknij Dalej.
  2. Skonfiguruj Google Analytics w swoim projekcie, aby zapewnić optymalny komfort korzystania z jednej z tych usług Firebase:
  • Firebase Crashlytics
  • Prognozy Firebase
  • Komunikacja w chmurze Firebase
  • Wysyłanie wiadomości w aplikacji Firebase
  • Zdalna konfiguracja Firebase
  • Testy A/B Firebase

Gdy pojawi się odpowiedni komunikat, wybierz opcję korzystania z dotychczasowego konta Google Analytics lub utwórz nowe konto. Jeśli zdecydujesz się utworzyć nowe konto, wybierz lokalizację raportowania Analytics, a następnie zaakceptuj ustawienia udostępniania danych i warunki korzystania z Google Analytics w swoim projekcie.

1282a798556779ab.png

48ade68c8de27d2.png

  1. Kliknij Utwórz projekt (lub Dodaj Firebase, jeśli używasz istniejącego projektu GCP).

Firebase automatycznie udostępnia zasoby projektu Firebase. Po zakończeniu tego procesu otworzy się strona przeglądu Twojego projektu Firebase w konsoli Firebase.

Rejestrowanie aplikacji w Firebase

Po utworzeniu projektu Firebase możesz dodać do niego swoją aplikację na Androida.

W artykule Informacje o projektach Firebase znajdziesz więcej informacji o sprawdzonych metodach i kwestii związanych z dodawaniem aplikacji do projektu Firebase, w tym o obsłudze wielu wariantów kompilacji.

  1. Otwórz konsolę Firebase.
  2. Aby rozpocząć proces konfiguracji, u góry strony Podsumowanie projektu kliknij ikonę Androida. Jeśli masz już aplikację dodaną do projektu Firebase, kliknij Dodaj aplikację, aby wyświetlić opcje platformy.
  3. Wpisz nazwę pakietu aplikacji w polu Nazwa pakietu na Androida.
  4. (Opcjonalnie) Wpisz nazwę aplikacji.
  5. Pole SHA-1 pozostaw puste, ponieważ w tym projekcie nie jest wymagany SHA-1.
  6. Kliknij Zarejestruj aplikację.

Dodaj plik konfiguracyjny Firebase.

Pojawi się prośba o pobranie pliku konfiguracji, który zawiera wszystkie niezbędne metadane Firebase dotyczące aplikacji. Kliknij Pobierz google-services.json, aby uzyskać plik konfiguracyjny Firebase na Androida (google-services.json).

bc8ec7d3c9a28d75.png

a99b7415462dfc8b.png

W pliku Gradle na poziomie projektu (build.gradle) dodaj reguły, które obejmują wtyczkę Gradle usług Google. Sprawdź też, czy masz repozytorium Maven Google.

Plik build.gradle na poziomie projektu (<project>/build.gradle):

buildscript {

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }

  dependencies {
    // ...

    // Add the following line:
    classpath 'com.google.gms:google-services:4.3.5'  // Google Services plugin
  }
}

allprojects {
  // ...

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    // ...
  }
}

W pliku Gradle (na poziomie aplikacji) modułu (na poziomie aplikacji) (zwykle app/build.gradle) zastosuj wtyczkę Gradle usług Google:

Plik build.gradle na poziomie aplikacji (<project>/<app-module>/build.gradle):

zastosuj wtyczkę: „com.android.application”

// Dodaj ten wiersz:

apply Plugin: ‘com.google.gms.google-services' // Wtyczka Google Services

android {

// ...

}

Dodawanie pakietu SDK Firebase do aplikacji na Androida

Zdalna konfiguracja wymaga Google Analytics do kierowania warunkowego instancji aplikacji na odbiorców i właściwości użytkowników. Upewnij się, że w swoim projekcie masz włączoną usługę Google Analytics.

(zostało to już zrobione w przykładowym kodzie krótkiego wprowadzenia).

Korzystając z funkcji Firebase Android BoM, zadeklaruj zależność z biblioteką Zdalnej konfiguracji na Androida w pliku Gradle na poziomie modułu (aplikacji) (zwykle app/build.gradle). Gdy korzystasz z Firebase Android BoM, Twoja aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.

W ramach konfigurowania Analytics musisz też dodać do swojej aplikacji pakiet SDK Firebase dla Google Analytics. W sekcji zależności dodaj ten kod:

app/build.gradle

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:26.6.0')

    // Declare the dependencies for the Remote Config and Analytics libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-config'
    implementation 'com.google.firebase:firebase-analytics'
}

Synchronizowanie projektu z plikami Gradle

Aby aplikacja miała dostęp do wszystkich zależności, zsynchronizuj projekt z plikami Gradle. W tym celu wybierz Plik > Synchronizowanie projektu z plikami Gradle

4. Przejrzyj główne komponenty Zdalnej konfiguracji.

Teraz omówimy czynności niezbędne do korzystania ze Zdalnej konfiguracji w aplikacji. Te kroki zostały już wykonane w kodzie ćwiczenia z programowania. Skorzystaj z tej sekcji podczas zapoznania się z kodem ćwiczenia z programowania, aby zrozumieć, co się dzieje.

1. Pobierz obiekt Singleton Zdalnej konfiguracji

Pobierz instancję obiektu Zdalnej konfiguracji i ustaw minimalny odstęp czasu pobierania, aby umożliwić częste odświeżanie:

MainActivity.java

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

Obiekt singleton służy do przechowywania domyślnych wartości parametrów w aplikacji, pobierania zaktualizowanych wartości parametrów z backendu i kontrolowania, kiedy pobrane wartości mają być udostępniane aplikacji.

Podczas programowania zalecamy ustawienie stosunkowo niskiego minimalnego odstępu pobierania. Więcej informacji znajdziesz w sekcji Ograniczanie wykorzystania.

2. Ustaw domyślne wartości parametrów w aplikacji

W obiekcie Zdalnej konfiguracji możesz ustawić domyślne wartości parametrów aplikacji, dzięki czemu aplikacja zachowuje się zgodnie z oczekiwaniami, zanim połączy się z backendem Zdalnej konfiguracji, a jeśli w backendzie nie zostanie ustawiona żadna wartość domyślna, będą one dostępne.

Zbiór nazw parametrów i ich domyślne wartości możesz zdefiniować za pomocą obiektu Map lub pliku zasobów XML zapisanego w folderze res/xml aplikacji. Przykładowa aplikacja z krótkim wprowadzeniem do Zdalnej konfiguracji używa pliku XML do definiowania domyślnych nazw i wartości parametrów. W ten sposób możesz utworzyć własny plik XML:

  1. Utwórz folder xml w folderze res.

4b8a2a637a626e94.png

  1. Kliknij prawym przyciskiem myszy nowo utworzony folder xml i utwórz plik.

358b4ba740120ece.png

  1. Ustaw wartości domyślne. W następnej sekcji spróbujesz zmienić wartości domyślne w pliku XML krótkiego wprowadzenia do Zdalnej konfiguracji.
  2. Dodaj te wartości do obiektu Zdalnej konfiguracji za pomocą metody setDefaultsAsync(int):

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

3. Pobieranie wartości parametrów do użycia w aplikacji

Teraz możesz pobierać wartości parametrów z obiektu Zdalnej konfiguracji. Jeśli ustawisz wartości w backendzie, pobierzesz je i aktywujesz, będą one dostępne w Twojej aplikacji. W przeciwnym razie pobierasz wartości parametrów w aplikacji skonfigurowane za pomocą metody setDefaultsAsync(int). Aby uzyskać te wartości, wywołaj podaną poniżej metodę, która jest mapowana na typ danych spodziewany przez aplikację, podając klucz parametru jako argument:

4. Pobierz i aktywuj wartości

  1. Aby pobrać wartości parametrów z backendu Zdalnej konfiguracji, wywołaj metodę fetch(). Wszystkie wartości ustawione w backendzie są pobierane i przechowywane w obiekcie Zdalnej konfiguracji.
  2. Aby udostępnić aplikacji pobrane wartości parametrów, wywołaj metodę activate(). Jeśli chcesz pobrać i aktywować wartości w ramach jednego wywołania, możesz użyć żądania deliveryAndActivate(), aby pobrać wartości z backendu Zdalnej konfiguracji i udostępnić je aplikacji:

MainActivity.java

mFirebaseRemoteConfig.fetchAndActivate()
        .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    boolean updated = task.getResult();
                    Log.d(TAG, "Config params updated: " + updated);
                    Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                            Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(MainActivity.this, "Fetch failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

Te zaktualizowane wartości parametrów wpływają na działanie i wygląd aplikacji, dlatego musisz aktywować pobrane wartości w takim przypadku, aby zapewnić ich bezproblemowe działanie, np. gdy następnym razem użytkownik uruchomi aplikację. Więcej informacji i przykłady znajdziesz w artykule Strategie wczytywania Zdalnej konfiguracji.

Ograniczanie

Jeśli aplikacja pobierze zbyt wiele razy w krótkim czasie, wywołania pobierania są ograniczane, a pakiet SDK zwraca wartość FirebaseRemoteConfigFetchThrottledException. Przed wersją 17.0.0 pakietu SDK obowiązywał limit 5 żądań pobierania w 60-minutowym okresie (w nowszych wersjach obowiązują bardziej rygorystyczne limity).

Podczas tworzenia aplikacji warto często pobierać i aktywować konfiguracje (wiele razy na godzinę), aby umożliwić szybkie iteracje podczas jej tworzenia i testowania. Aby zapewnić szybką iterację projektu z udziałem maksymalnie 10 deweloperów, możesz tymczasowo ustawić w aplikacji obiekt FirebaseRemoteConfigSettings z krótkim minimalnym interwałem pobierania (setMinimumFetchIntervalInSeconds).

Domyślny minimalny interwał pobierania dla Zdalnej konfiguracji to 12 godzin, co oznacza, że konfiguracje będą pobierane z backendu tylko raz w ciągu 12 godzin niezależnie od tego, ile rzeczywiście zostało wykonanych wywołań pobierania. Minimalny odstęp czasu pobierania jest określany w tej kolejności:

  1. Parametr w polu fetch(long)
  2. Parametr w polu FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. Wartość domyślna to 12 godzin.

Aby ustawić minimalny interwał pobierania na wartość niestandardową, użyj funkcji FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long).

5. Zmiana zachowania aplikacji przy użyciu Zdalnej konfiguracji

Zmiana domyślnych parametrów aplikacji

Otwórz res/xml/remote_config_defaults.xml i zmień wartości domyślne na inne.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
    <entry>
        <key>loading_phrase</key>
        <value>Fetching config...</value>
    </entry>
    <entry>
        <key>welcome_message_caps</key>
        <value>false</value>
    </entry>
    <entry>
        <key>welcome_message</key>
        <value>Welcome to my awesome app!</value>
    </entry>
</defaultsMap>
    <!-- END xml_defaults -->

Sprawdzanie zmiany domyślnej wartości w aplikacji

  1. Uruchom projekt w emulatorze lub użyj urządzenia testowego, aby potwierdzić działanie.
  2. Kliknij opcję Otwórz w wersji Java lub Kotlin.

c1582b989c25ced.png

  1. Przeczytaj wiadomość powitalną w widoku głównym.

4c838bf5a629d5b8.png

Ustawianie wartości parametrów w backendzie Zdalnej konfiguracji

Teraz przetestujmy wysyłanie wartości przez Zdalną konfigurację. Za pomocą konsoli Firebase lub interfejsów API backendu Zdalnej konfiguracji możesz utworzyć nowe wartości domyślne po stronie serwera, które zastąpią wartości w aplikacji zgodnie z oczekiwaną logiką warunkową lub kierowaniem na użytkowników. W tej sekcji opisujemy, jak utworzyć te wartości w konsoli Firebase.

  1. Otwórz konsolę Firebase i otwórz projekt.
  2. Aby wyświetlić panel Zdalnej konfiguracji, wybierz Zdalna konfiguracja z menu po lewej stronie w sekcji Engage.
  3. W sekcji Dodaj parametr wpisz Parameter key.. W polu Default value wpisz dowolny tekst. Następnie kliknij Dodaj parametr. W tym ćwiczeniu w Codelabs użyjemy kluczy parametrów w pliku res/xml/remote_config_defaults.xml. Tabela poniżej zawiera szczegółowe informacje:

Klucz parametru

Wartość domyślna (remote_config_defaults.xml)

Opis

loading_phrase

Pobieram konfigurację...

String; Wyświetlany podczas pobierania wartości Zdalnej konfiguracji.

welcome_message_caps

fałsz

wartość logiczna; Jeśli ma wartość prawda, zmienia tekst Welcome_message na wielkie litery

welcome_message

Witamy w mojej świetnej aplikacji!

String; Wiadomość powitalna

Przykładowy zrzut ekranu:

28fa48f18da43002.png

  1. Po zakończeniu dodawania parametrów kliknij „Opublikuj zmiany”.
  2. Ponownie uruchom aplikację w emulatorze lub na urządzeniu i kliknij przycisk „Pobierz zdalne powitanie” tym razem przycisk.

cfe900477549adb7.png

  1. Wiadomość powitalna powinna zostać zaktualizowana na podstawie parametrów i wartości Zdalnej konfiguracji.

6. Gratulacje

Gratulacje. Udało Ci się zmienić wiadomość powitalną za pomocą Zdalnej konfiguracji. Jest wiele innych sposobów używania Zdalnej konfiguracji do modyfikowania i dostosowywania aplikacji. Dodatkowe materiały znajdziesz poniżej: