Inne interfejsy API systemu Android
Ważne
Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.
Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.
Dostosowywanie poziomu dziennika
Możesz kontrolować ilość komunikatów dziennika przez centrum aplikacji, które są wyświetlane w usłudze LogCat. Użyj interfejsu AppCenter.setLogLevel()
API, aby włączyć dodatkowe rejestrowanie podczas debugowania. Poziomy dziennika odpowiadają poziomom zdefiniowanym w pliku android.util.Log
. Domyślnie jest ona ustawiana na ASSERT
dla aplikacji bez debugowania i WARN
dla aplikacji z możliwością debugowania. Poziom dziennika można ustawić w dowolnym momencie.
Aby mieć jak najwięcej komunikatów dziennika, użyj polecenia Log.Verbose
.
AppCenter.setLogLevel(Log.VERBOSE);
AppCenter.setLogLevel(Log.VERBOSE)
Identyfikowanie instalacji
Zestaw SDK centrum aplikacji tworzy identyfikator UUID dla każdego urządzenia po zainstalowaniu aplikacji. Ten identyfikator pozostaje taki sam dla urządzenia, gdy aplikacja zostanie zaktualizowana, a nowy jest generowany tylko wtedy, gdy aplikacja zostanie ponownie zainstalowana lub użytkownik ręcznie usunie wszystkie dane aplikacji. Poniższy interfejs API jest przydatny do celów debugowania.
AppCenter.getInstallId();
AppCenter.getInstallId()
Ten interfejs API jest asynchroniczny. Więcej informacji na ten temat można przeczytać w przewodniku asynchronicznych interfejsów API centrum aplikacji .
Uwaga
Ta metoda musi być używana tylko po AppCenter
rozpoczęciu. Będzie ona zawsze zwracana null
przed rozpoczęciem.
Identyfikowanie użytkowników
Zestaw SDK centrum aplikacji obsługuje ustawianie identyfikatora użytkownika używanego do rozszerzania raportów o awarie. Aby użyć tej funkcji:
- Skonfiguruj zestaw SDK centrum aplikacji, wywołując wywołanie
AppCenter.start(...)
metody zgodnie z opisem w przewodniku Wprowadzenie do zestawu SDK centrum aplikacji. - Ustaw element
userID
w zestawie SDK przy użyciu następującego kodu:
AppCenter.setUserId("your-user-id");
AppCenter.setUserId("your-user-id")
Po ustawieniu identyfikatora użytkownika możesz użyć funkcji wyszukiwania centrum App Center, aby wyszukać określone raporty o awarii dla identyfikatora. Dowiedz się więcej w dokumentacji wyszukiwania centrum aplikacji.
Uwaga
Wartość identyfikatora użytkownika jest ograniczona do 256 znaków. Zostanie on wyświetlony z raportami awarii, ale nie będzie używany do agregacji lub liczby użytkowników, których dotyczy problem. Jeśli ustawisz identyfikator użytkownika wiele razy, zostanie użyty tylko ostatni identyfikator użytkownika. Należy ustawić identyfikator użytkownika przed uruchomieniem każdej aplikacji, ponieważ ta wartość nie jest przechowywana przez zestaw SDK między uruchomieniem.
Wyłączanie wszystkich usług w czasie wykonywania
Jeśli chcesz wyłączyć wszystkie usługi App Center jednocześnie, użyj interfejsu setEnabled()
API. Po wyłączeniu zestaw SDK nie będzie przekazywać żadnych informacji do Centrum aplikacji.
AppCenter.setEnabled(false);
AppCenter.setEnabled(false)
Aby ponownie włączyć wszystkie usługi, użyj tego samego interfejsu API, ale przekaż true
go jako parametr.
AppCenter.setEnabled(true);
AppCenter.setEnabled(true)
Stan jest utrwalany w magazynie urządzenia w ramach uruchamiania aplikacji.
Ten interfejs API jest asynchroniczny. Więcej informacji na ten temat można przeczytać w przewodniku asynchronicznych interfejsów API centrum aplikacji .
Uwaga
Ta metoda musi być używana tylko po AppCenter
rozpoczęciu.
Nie zezwalaj na żądania sieciowe
W zestawie SDK centrum aplikacji żądania sieciowe są domyślnie dozwolone. Jeśli chcesz wysłać dane zbierane przez zestaw SDK centrum aplikacji przez użytkownika, możesz uniemożliwić automatyczne wysyłanie danych.
AppCenter.setNetworkRequestsAllowed(false);
AppCenter.setNetworkRequestsAllowed(false)
W takim przypadku zestaw SDK centrum aplikacji nadal zbiera dane, ale będzie wysyłany tylko wtedy, gdy żądania sieciowe będą dozwolone.
AppCenter.setNetworkRequestsAllowed(true);
AppCenter.setNetworkRequestsAllowed(true)
Uwaga
Ta wartość jest zachowywana między uruchamianiami.
W dowolnym momencie możesz sprawdzić, czy wysyłanie danych w zestawie SDK centrum aplikacji jest dozwolone, czy nie.
AppCenter.isNetworkRequestsAllowed();
AppCenter.isNetworkRequestsAllowed()
Uwaga
Wartość zapisana wcześniej w SharedPreferences
pliku jest ignorowana do AppCenter
momentu uruchomienia.
Zostanie zwrócony ostatni zestaw wartości przy użyciu setNetworkRequestsAllowed
lub true
jeśli wartość nie została zmieniona przed uruchomieniem programu AppCenter.
Zmienianie stanu usługi w czasie wykonywania
Włącz lub wyłącz usługi w czasie wykonywania przy użyciu następującego kodu:
Analytics.setEnabled(false);
Analytics.setEnabled(false)
Uwaga
Ta metoda musi być używana tylko po Analytics
rozpoczęciu.
Sprawdzanie, czy centrum aplikacji jest włączone
Możesz również sprawdzić, czy centrum aplikacji jest włączone, czy nie.
AppCenter.isEnabled();
AppCenter.isEnabled()
Ten interfejs API jest asynchroniczny. Więcej informacji na ten temat można przeczytać w przewodniku asynchronicznych interfejsów API centrum aplikacji .
Uwaga
Ta metoda musi być używana tylko po AppCenter
rozpoczęciu. Będzie ona zawsze zwracana false
przed rozpoczęciem.
Sprawdzanie wersji zestawu SDK centrum aplikacji w czasie wykonywania
Możesz pobrać wersję zestawu SDK centrum aplikacji, której obecnie używasz.
AppCenter.getSdkVersion();
AppCenter.getSdkVersion()
Rozmiar magazynu
W przypadku korzystania z zestawu SDK centrum aplikacji dzienniki są przechowywane lokalnie na urządzeniu. Duże dzienniki mogą zająć dużo miejsca, więc możesz ograniczyć rozmiar lokalnej bazy danych. Jest to również przydatne w połączeniu z interfejsami pause
API i resume
. Jeśli spodziewasz się wstrzymania przez długi czas, możesz użyć większego rozmiaru bazy danych do przechowywania większej liczby zdarzeń.
Za pomocą interfejsu setMaxStorageSize
API można ustawić rozmiar lokalnej bazy danych. Interfejs API jest asynchroniczny, a wywołanie zwrotne jest wywoływane podczas uruchamiania usług App Center. Z tego powodu setMaxStorageSize
należy wywołać wywołanie przed połączeniem z usługą AppCenter.start(...)
. Interfejs API można wywołać tylko raz.
// Use 20 MB for storage.
AppCenter.setMaxStorageSize(20 * 1024 * 1024L).thenAccept(new AppCenterConsumer<Boolean>() {
@Override
public void accept(Boolean success) {
// The success parameter is false when the size can't be honored.
}
});
AppCenter.start("{Your App Secret}", Analytics.class);
// Use 20 MB for storage.
AppCenter.setMaxStorageSize(20 * 1024 * 1024).thenAccept {
// The success parameter (it) is false when the size can't be honored.
}
AppCenter.start(application, "{Your App Secret}", Analytics::class.java)
Jeśli nie ustawisz maksymalnego rozmiaru magazynu, zestaw SDK używa domyślnego maksymalnego rozmiaru 10 MB. Minimalny rozmiar, który można ustawić, to 20 KB.
Uwaga
Rzeczywisty maksymalny rozmiar magazynu może być wyższy niż wybrana wartość. SqLite zaokrągla rozmiar do następnej wielokrotności rozmiaru strony. Zestaw SDK centrum aplikacji używa rozmiaru strony o rozmiarze 4 KB.
Uwaga
Dzienniki starsze niż 25 dni zostaną odrzucone.
Dodawanie magazynów dystrybucji
Domyślnie aktualizacje w aplikacji działają dla aplikacji zainstalowanych z zdefiniowanej listy sklepów. Jeśli chcesz dystrybuować aplikację za pośrednictwem sklepów, które nie znajdują się na wstępnie zdefiniowanej liście sklepów, możesz dodać wymagany instalator pakietów przy użyciu poniższego interfejsu API przed uruchomieniem centrum aplikacji:
Set<String> stores = new HashSet<String>();
stores.add("com.store1.packageinstaller");
stores.add("com.store2.packageinstaller");
Distribute.addStores(stores);
Uwaga
Nie dodawaj sklepów, takich jak Google Play, aby uniknąć żadnych ograniczeń.
Nieudane wywołania interfejsu API
Istnieje wiele powodów, dla których wywołanie zwrotne może zakończyć się niepowodzeniem.
- Określony rozmiar to nieprawidłowa wartość (mniejsza niż 20 KB lub większa niż 140 TB).
- Bieżący rozmiar bazy danych jest większy niż określony maksymalny rozmiar.
- Interfejs API został już wywołany. Można go skonfigurować tylko raz w każdym procesie.
- Interfejs API został wywołany po
AppCenter.start(...)
.
Ostrzeżenia i błędy można sprawdzić w konsoli przy użyciu tagu AppCenter
dziennika, aby rozwiązać problemy z konfiguracją.
Asynchroniczne interfejsy API w zestawie Android SDK
Asynchroniczne interfejsy API zwracają AppCenterFuture
obiekt zamiast zwracać wynik bezpośrednio.
Możesz wywołać get()
obiekt w przyszłości, aby synchronicznie czekać na wynik lub podać wywołanie zwrotne w następujący sposób, wypełniając odpowiednie typy zwracane podczas wywoływania interfejsu API:
AppCenterFuture<{ReturnType}> future = {AnyAsyncApi}();
future.thenAccept(new AppCenterConsumer<{ReturnType}>() {
@Override
public void accept({ReturnType} result) {
// do something with result, this is called back in UI thread.
}
});
val future = {AnyAsyncApi}()
future.thenAccept(object : AppCenterConsumer<{ReturnType}> {
override fun accept(t: {ReturnType}?) {
// do something with result, this is called back in UI thread.
}
})
Aby uniknąć blokowania wątku interfejsu użytkownika, który powoduje spowolnienie aplikacji, rozważ użycie wywołania thenAccept
zwrotnego przez cały czas.
W wątku procesu roboczego można wywołać metodę {AnyAsyncApi}().get()
.
Przykład wywołania zwrotnego:
AppCenter.isEnabled().thenAccept(new AppCenterConsumer<Boolean>() {
@Override
public void accept(Boolean enabled) {
Log.d("MyApp", "AppCenter.isEnabled=" + enabled);
}
});
AppCenter.isEnabled().thenAccept { enabled ->
Log.d("MyApp", "AppCenter.isEnabled=$enabled")
}
Przykład synchroniczny:
boolean enabled = AppCenter.isEnabled().get();
val enabled = AppCenter.isEnabled().get()