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:

  1. Skonfiguruj zestaw SDK centrum aplikacji, wywołując wywołanie AppCenter.start(...) metody zgodnie z opisem w przewodniku Wprowadzenie do zestawu SDK centrum aplikacji.
  2. 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()