Zablokuj sklep

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Wielu użytkowników nadal zarządza własnymi danymi logowania podczas konfigurowania nowego urządzenia z Androidem. Ten proces ręczny może stać się trudnym zadaniem i pogarszać wygodę użytkowników. Block API (biblioteka) z usługami Google Play pomaga rozwiązać ten problem przez zapewnienie aplikacjom możliwości zapisywania danych logowania bez złożoności związanych z zapisem tych haseł.

Interfejs Block Store API umożliwia aplikacji zapisywanie danych logowania użytkowników, które można później pobrać na nowe urządzenie. Zwiększy to wygodę użytkownika, ponieważ przy pierwszym uruchomieniu aplikacji na nowym urządzeniu nie będzie trzeba widzieć ekranu logowania.

Oto kilka zalet korzystania z blokady:

  • Zaszyfrowane rozwiązanie do przechowywania danych logowania dla deweloperów. Gdy tylko jest to możliwe, dane logowania są w pełni szyfrowane.
  • Zapisz tokeny zamiast nazw użytkowników i haseł.
  • Wyeliminuj problemy z logowaniem.
  • Oszczędność użytkowników dzięki zarządzaniu złożonymi hasłami.
  • Google weryfikuje tożsamość użytkownika.

Zanim zaczniesz

Aby przygotować aplikację, wykonaj czynności opisane w kolejnych sekcjach.

Konfigurowanie aplikacji

W pliku build.gradle na poziomie projektu uwzględnij repozytorium Maven i Google w sekcjach buildscript i allprojects:

buildscript {
  repositories {
    google()
    mavenCentral()
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
  }
}

Dodaj zależność z usługami Google Play w interfejsie Block Store API do pliku kompilacji Gradle, który zwykle jest app/build.gradle:

dependencies {
  implementation 'com.google.android.gms:play-services-auth-blockstore:16.1.0'
}

Jak to działa

Block Lock to mechanizm logowania oparty na tokenach, który jest w pełni szyfrowany i zbudowany na podstawie infrastruktury tworzenia i przywracania kopii zapasowych. Oto jak działa aplikacja korzystająca z Block Store:

  1. Podczas uwierzytelniania aplikacji lub w dowolnym późniejszym momencie możesz zapisać token uwierzytelniania użytkownika w Block Store, aby móc go później pobrać.
  2. Token będzie przechowywany lokalnie, a w miarę możliwości można tworzyć kopie zapasowe w chmurze.
  3. Dane są przenoszone, gdy użytkownik rozpocznie proces przywracania na nowym urządzeniu.
  4. Jeśli użytkownik przywróci Twoją aplikację w trakcie procesu przywracania, zapisana aplikacja będzie mogła pobrać token zapisany z Block Store na nowym urządzeniu.

Zapisuję token

Gdy użytkownik zaloguje się w Twojej aplikacji, możesz zapisać token uwierzytelniania wygenerowany dla tego użytkownika w Block Store. W tym celu wywołuje metodę setBytes() w wystąpieniu StoreBytesData.Builder, aby przechowywać dane logowania użytkownika na urządzeniu źródłowym. Gdy zapiszesz token w Block Store, zostanie on zaszyfrowany i zapisany lokalnie na urządzeniu.

Poniższy przykład pokazuje, jak zapisać token uwierzytelniania na urządzeniu lokalnym:

val client = Blockstore.getClient(this)
val data = StoreBytesData.Builder()
        .setBytes(/* BYTE_ARRAY */)
        .build()
client.storeBytes(data)
        .addOnSuccessListener{ result ->
            Log.d(TAG, "Stored: ${result} bytes")
        }
        .addOnFailureListener { e ->
            Log.e(TAG, “Failed to store bytes”, e)
        }

Odzyskiwanie tokena

Później, gdy użytkownik przeprowadzi proces przywracania na nowym urządzeniu, Usługi Google Play najpierw sprawdzą go, a potem pobierają Twoje dane z blokady. W ramach procesu przywracania użytkownik zgodził się już przywrócić dane aplikacji, więc nie są wymagane żadne dodatkowe zgody. Gdy użytkownik otworzy aplikację, możesz poprosić o token z Block Store, wywołując retrieveBytes(). Pobrany token będzie mógł służyć do utrzymywania statusu użytkownika na nowym urządzeniu.

Poniższy przykład pokazuje, jak pobrać zaszyfrowany token zapisany wcześniej w Block Store:

val client = Blockstore.getClient(this)
client.retrieveBytes()
            .addOnSuccessListener { result ->
                Log.d(TAG, "Retrieved: ${String(result)}")
            }
            .addOnFailureListener { e ->
                Log.e(TAG, "Failed to retrieve bytes", e)
            }
}

Pełne szyfrowanie

Aby pełne szyfrowanie było możliwe, urządzenie musi mieć Androida w wersji 9 lub nowszej, a użytkownik musi mieć włączoną blokadę ekranu (kod PIN, wzór lub hasło). Aby sprawdzić, czy szyfrowanie jest dostępne na urządzeniu, wyślij wiadomość na adres isEndToEndEncryptionAvailable().

Poniższy przykład pokazuje, jak sprawdzić, czy szyfrowanie jest dostępne podczas tworzenia kopii zapasowej w chmurze:

client.isEndToEndEncryptionAvailable()
        .addOnSuccessListener { result ->
          Log.d(TAG, "Will Block Store cloud backup be end-to-end encrypted? $result")
        }

Włącz kopię zapasową w chmurze

Aby włączyć kopię zapasową w chmurze, dodaj metodę setShouldBackupToCloud() do obiektu StoreBytesData. Gdy zasada setShouldBackupToCloud() ma wartość Prawda, usługa Block Store okresowo tworzy kopię zapasową w chmurze.

Poniższy przykład pokazuje, jak włączyć kopię zapasową w chmurze tylko wtedy, gdy kopia zapasowa w chmurze jest w pełni szyfrowana:

val client = Blockstore.getClient(this)
val storeBytesDataBuilder = StoreBytesData.Builder()
        .setBytes(/* BYTE_ARRAY */)

client.isEndToEndEncryptionAvailable()
        .addOnSuccessListener { isE2EEAvailable ->
          if (isE2EEAvailable) {
            storeBytesDataBuilder.setShouldBackupToCloud(true)
            Log.d(TAG, "E2EE is available, enable backing up bytes to the cloud.")

            client.storeBytes(storeBytesDataBuilder.build())
                .addOnSuccessListener { result ->
                  Log.d(TAG, "stored: ${result.getBytesStored()}")
                }.addOnFailureListener { e ->
                  Log.e(TAG, “Failed to store bytes”, e)
                }
          } else {
            Log.d(TAG, "E2EE is not available, only store bytes for D2D restore.")
          }
        }

Jak przeprowadzić test

Aby przetestować procesy przywracania, użyj tych metod podczas programowania.

Odinstalowanie i ponowne zainstalowanie tego samego urządzenia

Jeśli użytkownik włączy usługi kopii zapasowej (można to sprawdzić w sekcji Ustawienia > Google > Kopia zapasowa), dane dotyczące blokowania w sklepie będą trwałe przez odinstalowanie i ponowne zainstalowanie aplikacji.

Aby to sprawdzić, wykonaj te czynności:

  1. Zintegruj interfejs BlockStore API z aplikacją testową.
  2. Użyj aplikacji testowej do wywoływania interfejsu BlockStore API do przechowywania danych.
  3. Odinstaluj aplikację testową i ponownie zainstaluj ją na tym samym urządzeniu.
  4. Aby pobrać dane, użyj aplikacji testowej do wywołania interfejsu BlockStore API.
  5. Przed odinstalowaniem sprawdź, czy pobrane bajty są takie same jak zapisane.

Między urządzeniami

W większości przypadków wymaga to przywrócenia do urządzenia ustawień fabrycznych. Następnie możesz wpisać proces przywracania bezprzewodowego Androida lub przywrócić kabel Google (dotyczy obsługiwanych urządzeń).

Przywracanie w chmurze

  1. Zintegruj interfejs API Storestore z aplikacją testową. Aplikację testową należy przesłać do Sklepu Play.
  2. Na urządzeniu źródłowym użyj aplikacji testowej do wywoływania interfejsu Blockstore API do przechowywania danych, gdzie parametr BackBackToCloud ma wartość Prawda.
  3. W przypadku urządzeń z Androidem OS i nowszych możesz ręcznie uruchomić tworzenie kopii zapasowej w Cloud Store. Otwórz Ustawienia i usługę kopii zapasowej Google, kliknij przycisk „Utwórz kopię zapasową”.
    1. Aby sprawdzić, czy kopia zapasowa w Cloud Storage została utworzona, możesz:
      1. Po utworzeniu kopii zapasowej wyszukaj wiersze logu z tagiem „CloudSyncBpTkSvc”.
      2. Powinny pojawić się wiersze „......, CloudSyncBpTkSvc: wynik synchronizacji: SUCCESS, ..., przesłany rozmiar: XXX bajty ...”
    2. Po utworzeniu kopii zapasowej w Cloud Store rozpoczyna się 5-minutowy okres oczekiwania. Jeśli w ciągu 5 minut kliknięcie przycisku „Utwórz kopię zapasową” nie spowoduje uruchomienia kolejnej kopii zapasowej Cloud Storage.
  4. Przywróć ustawienia fabryczne na urządzeniu docelowym i wykonaj procedurę przywracania chmury. Wybierz, aby przywrócić aplikację testową w trakcie procesu przywracania. Więcej informacji o procesach przywracania chmury znajdziesz w artykule Obsługiwane procesy przywracania chmury.
  5. Na urządzeniu docelowym użyj aplikacji testowej do wywoływania interfejsu Blockstore API, aby pobrać swoje dane.
  6. Sprawdź, czy pobrane bajty są takie same jak te zapisane na urządzeniu źródłowym.

Wymagania dotyczące urządzeń

Pełne szyfrowanie

  • Pełne szyfrowanie jest obsługiwane na urządzeniach z Androidem 9 (API 29) lub nowszym.
  • Aby można było włączyć pełne szyfrowanie i prawidłowo zaszyfrować dane użytkownika, na urządzeniu musi być włączona blokada ekranu z kodem PIN, wzorem lub hasłem.

Procedura przywracania urządzenia

Aby przywrócić urządzenie, musisz mieć urządzenie źródłowe i docelowe. Będą to 2 urządzenia, które przesyłają dane.

Aby tworzyć kopie zapasowe urządzeń źródłowych, musisz mieć Androida 6 (API 23) lub nowszego.

Kierowanie na urządzenia z Androidem 9 (API 29 lub nowszym) w celu przywrócenia danych.

Więcej informacji na temat procesu przywracania ustawień urządzenia znajdziesz tutaj.

Proces tworzenia i przywracania kopii zapasowej w chmurze

Tworzenie i przywracanie kopii zapasowej w chmurze będzie wymagało urządzenia źródłowego i docelowego.

Aby tworzyć kopie zapasowe urządzeń źródłowych, musisz mieć Androida 6 (API 23) lub nowszego.

Urządzenia docelowe są obsługiwane w zależności od dostawców. Ta funkcja jest dostępna na urządzeniach z Androidem 9 (API 29) i innych na urządzeniach z Androidem 12 (API 31) lub nowszym.