Interfejs SafetyNet Verify Apps API to biblioteka oparta na Usługach Google Play, która umożliwia aplikacji programowe korzystanie z funkcji Weryfikacja aplikacji na urządzeniu, co chroni je przed potencjalnie szkodliwymi aplikacjami.
Jeśli aplikacja używa poufnych danych użytkownika, takich jak informacje finansowe, ważne jest, aby upewnić się, że urządzenie użytkownika jest chronione przed złośliwymi aplikacjami i nie ma na nim żadnych aplikacji, które mogłyby podszywać się pod Twoją aplikację lub wykonywać inne złośliwe działania. Jeśli poziom bezpieczeństwa urządzenia nie spełnia minimalnych wymagań, możesz wyłączyć funkcje w swojej aplikacji, aby zmniejszyć zagrożenie dla użytkownika.
W ramach stałego zobowiązania do zapewnienia jak największego bezpieczeństwa ekosystemu Androida Google monitoruje i profiluje zachowania aplikacji na Androida. Jeśli funkcja Weryfikuj aplikacje wykryje potencjalnie niebezpieczną aplikację, wszyscy użytkownicy, którzy ją zainstalowali, otrzymają powiadomienie i zachętę do jej natychmiastowego odinstalowania. Ten proces chroni bezpieczeństwo i prywatność tych użytkowników.
Interfejs SafetyNet Verify Apps API umożliwia korzystanie z tej funkcji w celu ochrony danych aplikacji. Za pomocą tego interfejsu API możesz sprawdzić, czy urządzenie użytkownika jest chronione przez funkcję Weryfikacja aplikacji, zachęcać użytkowników, którzy jeszcze nie korzystają z tej funkcji, do włączenia ochrony oraz identyfikować znane potencjalnie szkodliwe aplikacje zainstalowane na urządzeniu.
Dodatkowe warunki korzystania z usługi
Korzystanie z interfejsów SafetyNet API oznacza akceptację Warunków korzystania z interfejsów API Google oraz poniższych Warunków korzystania z interfejsu API Weryfikacja aplikacji. Przed uzyskaniem dostępu do interfejsów API przeczytaj i zrozum wszystkie obowiązujące warunki i zasady.
Warunki korzystania z interfejsu Verify Apps API
Analizy aplikacji, które identyfikują potencjalnie szkodliwe aplikacje, mogą dawać zarówno fałszywe alarmy, jak i fałszywe negatywne wyniki. Wyniki (lub ich brak) zwracane przez ten pakiet interfejsów API są prezentowane w najlepszy możliwy sposób. Przyjmujesz do wiadomości i rozumiesz, że wyniki zwracane przez ten pakiet interfejsów SafetyNet API nie zawsze muszą być dokładne.Dodaj zależność interfejsu SafetyNet API
Zanim zaczniesz korzystać z interfejsu Verify Apps API, dodaj SafetyNet API do projektu. Jeśli używasz Androida Studio, dodaj tę zależność do pliku Gradle na poziomie aplikacji. Więcej informacji znajdziesz w artykule Konfigurowanie interfejsu SafetyNet API.
Włączanie weryfikacji aplikacji
Interfejs SafetyNet Verify Apps API udostępnia 2 metody włączania funkcji Weryfikacja aplikacji. Aby sprawdzić, czy weryfikacja aplikacji jest włączona, użyj isVerifyAppsEnabled()
. Aby poprosić o włączenie weryfikacji aplikacji, użyj enableVerifyApps()
.
Różnica między tymi 2 metodami polega na tym, że isVerifyAppsEnabled()
zgłasza bieżący stan funkcji Weryfikacja aplikacji,
enableVerifyApps()
natomiast wyraźnie prosi użytkownika o zgodę na korzystanie z niej. Jeśli chcesz, aby aplikacja tylko znała stan tej funkcji i na tej podstawie podejmowała decyzje związane z bezpieczeństwem, powinna wywołać funkcję isVerifyAppsEnabled()
. Jeśli jednak chcesz mieć pewność, że Twoja aplikacja może wyświetlać listę potencjalnie szkodliwych zainstalowanych aplikacji, wywołaj metodę enableVerifyApps()
.
Sprawdzanie, czy weryfikacja aplikacji jest włączona
Metoda asynchroniczna isVerifyAppsEnabled()
umożliwia aplikacji określenie, czy użytkownik korzysta z funkcji Weryfikacja aplikacji. Ta metoda zwraca obiekt VerifyAppsUserResponse
, który zawiera informacje o wszystkich działaniach użytkownika związanych z funkcją Weryfikacja aplikacji, w tym o jej włączeniu.
Poniższy fragment kodu pokazuje, jak utworzyć wywołanie zwrotne powiązane z tą metodą:
Kotlin
SafetyNet.getClient(this) .isVerifyAppsEnabled .addOnCompleteListener { task -> if (task.isSuccessful) { if (task.result.isVerifyAppsEnabled) { Log.d("MY_APP_TAG", "The Verify Apps feature is enabled.") } else { Log.d("MY_APP_TAG", "The Verify Apps feature is disabled.") } } else { Log.e("MY_APP_TAG", "A general error occurred.") } }
Java
SafetyNet.getClient(this) .isVerifyAppsEnabled() .addOnCompleteListener(new OnCompleteListener<VerifyAppsUserResponse>() { @Override public void onComplete(Task<VerifyAppsUserResponse> task) { if (task.isSuccessful()) { VerifyAppsUserResponse result = task.getResult(); if (result.isVerifyAppsEnabled()) { Log.d("MY_APP_TAG", "The Verify Apps feature is enabled."); } else { Log.d("MY_APP_TAG", "The Verify Apps feature is disabled."); } } else { Log.e("MY_APP_TAG", "A general error occurred."); } } });
Prośba o włączenie weryfikacji aplikacji
Asynchroniczna metoda enableVerifyApps()
umożliwia aplikacji wywołanie okna z prośbą o włączenie funkcji Weryfikacja aplikacji. Ta metoda zwraca obiekt VerifyAppsUserResponse
, który zawiera informacje o wszystkich działaniach podjętych przez użytkownika w związku z funkcją Weryfikacja aplikacji, w tym o tym, czy wyraził on zgodę na jej włączenie.
Poniższy fragment kodu pokazuje, jak utworzyć wywołanie zwrotne powiązane z tą metodą:
Kotlin
SafetyNet.getClient(this) .enableVerifyApps() .addOnCompleteListener { task -> if (task.isSuccessful) { if (task.result.isVerifyAppsEnabled) { Log.d("MY_APP_TAG", "The user gave consent to enable the Verify Apps feature.") } else { Log.d( "MY_APP_TAG", "The user didn't give consent to enable the Verify Apps feature." ) } } else { Log.e("MY_APP_TAG", "A general error occurred.") } }
Java
SafetyNet.getClient(this) .enableVerifyApps() .addOnCompleteListener(new OnCompleteListener<VerifyAppsUserResponse>() { @Override public void onComplete(Task<VerifyAppsUserResponse> task) { if (task.isSuccessful()) { VerifyAppsUserResponse result = task.getResult(); if (result.isVerifyAppsEnabled()) { Log.d("MY_APP_TAG", "The user gave consent " + "to enable the Verify Apps feature."); } else { Log.d("MY_APP_TAG", "The user didn't give consent " + "to enable the Verify Apps feature."); } } else { Log.e("MY_APP_TAG", "A general error occurred."); } } });
Podczas korzystania z tej metody w aplikacji może wystąpić co najmniej jeden nietypowy warunek:
- Jeśli funkcja Weryfikuj aplikacje jest już włączona, okno dialogowe się nie wyświetla, a interfejs API działa tak, jakby użytkownik wyraził zgodę na włączenie tej funkcji.
- Jeśli użytkownik zamknie okno, zostanie ono usunięte, a interfejs API uzna, że użytkownik nie wyraził zgody na włączenie tej funkcji.
- Jeśli Twoja aplikacja i inna aplikacja wywołają tę metodę jednocześnie, pojawi się tylko jedno okno, a wszystkie aplikacje otrzymają identyczne wartości zwracane przez tę metodę.
Wyświetlanie listy potencjalnie szkodliwych zainstalowanych aplikacji
Asynchroniczna metoda listHarmfulApps()
umożliwia uzyskanie listy wszystkich znanych potencjalnie szkodliwych aplikacji, które użytkownik zainstalował na swoim urządzeniu. Ta lista zawiera kategorie zidentyfikowanych potencjalnie szkodliwych aplikacji, dzięki czemu Twoja aplikacja może podjąć odpowiednie działania.
Poniższy fragment kodu pokazuje, jak utworzyć wywołanie zwrotne powiązane z tą metodą:
Kotlin
SafetyNet.getClient(this) .listHarmfulApps() .addOnCompleteListener { task -> Log.d(TAG, "Received listHarmfulApps() result") if (task.isSuccessful) { val result = task.result val scanTimeMs = result.lastScanTimeMs val appList = result.harmfulAppsList if (appList?.isNotEmpty() == true) { Log.e("MY_APP_TAG", "Potentially harmful apps are installed!") for (harmfulApp in appList) { Log.e("MY_APP_TAG", "Information about a harmful app:") Log.e("MY_APP_TAG", " APK: ${harmfulApp.apkPackageName}") Log.e("MY_APP_TAG", " SHA-256: ${harmfulApp.apkSha256}") // Categories are defined in VerifyAppsConstants. Log.e("MY_APP_TAG", " Category: ${harmfulApp.apkCategory}") } } else { Log.d("MY_APP_TAG", "There are no known potentially harmful apps installed.") } } else { Log.d( "MY_APP_TAG", "An error occurred. Call isVerifyAppsEnabled() to ensure that the user " + "has consented." ) } }
Java
SafetyNet.getClient(this) .listHarmfulApps() .addOnCompleteListener(new OnCompleteListener<HarmfulAppsResponse>() { @Override public void onComplete(Task<HarmfulAppsResponse> task) { Log.d(TAG, "Received listHarmfulApps() result"); if (task.isSuccessful()) { HarmfulAppsResponse result = task.getResult(); long scanTimeMs = result.getLastScanTimeMs(); List<HarmfulAppsData> appList = result.getHarmfulAppsList(); if (appList.isEmpty()) { Log.d("MY_APP_TAG", "There are no known " + "potentially harmful apps installed."); } else { Log.e("MY_APP_TAG", "Potentially harmful apps are installed!"); for (HarmfulAppsData harmfulApp : appList) { Log.e("MY_APP_TAG", "Information about a harmful app:"); Log.e("MY_APP_TAG", " APK: " + harmfulApp.apkPackageName); Log.e("MY_APP_TAG", " SHA-256: " + harmfulApp.apkSha256); // Categories are defined in VerifyAppsConstants. Log.e("MY_APP_TAG", " Category: " + harmfulApp.apkCategory); } } } else { Log.d("MY_APP_TAG", "An error occurred. " + "Call isVerifyAppsEnabled() to ensure " + "that the user has consented."); } } });