其他 Android API

重要

Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到完全淘汰為止,但有數個建議的替代方案可以考慮移轉至。

深入瞭解支持時程表和替代方案。

調整記錄層級

您可以依 App Center 控制 LogCat 中顯示的記錄訊息數量。 使用 API 在偵錯 AppCenter.setLogLevel() 時啟用其他記錄。 記錄層級會對應至 中 android.util.Log定義的記錄層級。 根據預設,它會針對不可偵錯的應用程式和WARN可偵錯的應用程式將它ASSERT設定為 。 您可以隨時設定記錄層級。

若要盡可能有多個記錄訊息,請使用 Log.Verbose

AppCenter.setLogLevel(Log.VERBOSE);
AppCenter.setLogLevel(Log.VERBOSE)

識別安裝

App Center SDK 會在安裝應用程式之後,為每個裝置建立 UUID。 當應用程式更新且只有在重新安裝應用程式或使用者手動刪除所有應用程式數據時,才會為裝置產生相同的標識碼。 下列 API 適用於偵錯用途。

AppCenter.getInstallId();
AppCenter.getInstallId()

此 API 是異步的,您可以在 我們的 App Center 異步 API 指南 中深入瞭解。

注意

這個方法只能在啟動之後 AppCenter 使用,它一律會在開始之前傳回 null

識別使用者

App Center SDK 支援設定用來增強當機報告 的使用者標識碼 。 若要使用這項功能:

  1. App Center SDK 使用者入門指南中所述,呼叫 AppCenter.start(...) 來設定 App Center SDK。
  2. userID使用下列程式代碼在 SDK 中設定 :
AppCenter.setUserId("your-user-id");
AppCenter.setUserId("your-user-id")

設定使用者標識碼之後,您可以使用 App Center 的搜尋功能來搜尋標識碼的特定損毀報告。 深入瞭解 App Center 的 搜尋檔

注意

用戶標識碼的值限製為 256 個字元。 其會顯示為您的當機報告,但不會用於受影響用戶的匯總或計數。 如果您多次設定使用者標識碼,則只會使用最後一個使用者識別碼。 您必須在每次應用程式啟動時自行設定使用者標識碼,因為 SDK 不會在啟動之間儲存此值。

停用運行時間的所有服務

如果您想要一次停用所有 App Center 服務,請使用 setEnabled() API。 停用時,SDK 不會將任何信息轉送至 App Center。

AppCenter.setEnabled(false);
AppCenter.setEnabled(false)

若要再次啟用所有服務,請使用相同的 API,但傳遞 true 為參數。

AppCenter.setEnabled(true);
AppCenter.setEnabled(true)

狀態會保存在裝置的記憶體中,而應用程式會啟動。

此 API 是異步的,您可以在 我們的 App Center 異步 API 指南 中深入瞭解。

注意

只有在啟動之後 AppCenter ,才能使用這個方法。

不允許網路要求

在 App Center SDK 中,預設允許網路要求。 如果您想要傳送 App Center SDK 由使用者所收集的數據,您可以不允許自動傳送資料。

AppCenter.setNetworkRequestsAllowed(false);
AppCenter.setNetworkRequestsAllowed(false)

在此情況下,App Center SDK 會繼續收集數據,但只有在允許網路要求時才會傳送。

AppCenter.setNetworkRequestsAllowed(true);
AppCenter.setNetworkRequestsAllowed(true)

注意

此值會在開始之間保留。

您可以隨時檢查是否允許在 App Center SDK 中傳送數據。

AppCenter.isNetworkRequestsAllowed();
AppCenter.isNetworkRequestsAllowed()

注意

先前儲存的值 SharedPreferences 會被忽略,直到 AppCenter 啟動為止。 它會傳回使用 setNetworkRequestsAllowedtrue 設定的最後一個值,如果值在 AppCenter 啟動之前未變更,則會傳回 。

變更運行時間中的服務狀態

使用下列程式代碼在執行時間啟用或停用服務:

Analytics.setEnabled(false);
Analytics.setEnabled(false)

注意

只有在啟動之後 Analytics ,才能使用這個方法。

檢查 App Center 是否已啟用

您也可以檢查 App Center 是否已啟用。

AppCenter.isEnabled();
AppCenter.isEnabled()

此 API 是異步的,您可以在 我們的 App Center 異步 API 指南 中深入瞭解。

注意

這個方法只能在啟動之後 AppCenter 使用,它一律會在開始之前傳回 false

在運行時間檢查 App Center SDK 版本

您可以取得您目前使用的 App Center SDK 版本。

AppCenter.getSdkVersion();
AppCenter.getSdkVersion()

儲存體大小

使用 App Center SDK 時,記錄會儲存在本機裝置上。 大型記錄可能會佔用大量空間,因此您可以選擇限制本機資料庫的大小。 它也會與和 resume API 搭配pause使用。 如果您預期會暫停一段時間,您可以使用較大的資料庫大小來儲存更多事件。

您可以使用 setMaxStorageSize API 來設定本機 DB 的大小。 API 是異步的,當您啟動 App Center 服務時會呼叫回呼。 基於這個理由, setMaxStorageSize 必須在呼叫 之前呼叫 AppCenter.start(...)。 您只能呼叫 API 一次。

// 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)

如果您未設定記憶體大小上限,SDK 會使用預設大小上限 10 MB。 您可以設定的大小下限為 20 KB。

注意

實際的記憶體大小上限可能會高於您選擇的值。 SQLite 會將大小四捨五入到頁面大小的下一個倍數。 App Center SDK 使用 4 KB 的頁面大小。

注意

超過25天的記錄將會捨棄。

新增散發存放區

根據預設,應用程式內更新適用於從定義的市集清單安裝的應用程式。 如果您想要透過未包含在預先定義存放區清單中的市集散發應用程式,您可以在 App Center 啟動之前,使用下列 API 新增所需的套件安裝程式:

    Set<String> stores = new HashSet<String>();
    stores.add("com.store1.packageinstaller");
    stores.add("com.store2.packageinstaller");
    Distribute.addStores(stores);

注意

請勿新增Google Play之類的商店,以避免任何限制。

不成功的 API 呼叫

回呼可能會失敗的原因很多。

  • 指定的大小是無效的值, (小於 20KB 或大於 140TB) 。
  • 目前的資料庫大小大於指定的大小上限。
  • 已呼叫 API。 每個進程只能設定一次。
  • API 已在 之後 AppCenter.start(...)呼叫。

您可以使用記錄標籤檢查主控台 AppCenter 中的警告和錯誤,以針對設定問題進行疑難解答。

Android SDK 中的異步 API

異步 API 會傳 AppCenterFuture 回 物件,而不是直接傳回結果。

您可以在未來的物件上呼叫 get() 以同步等候結果,或提供類似如下的回呼,並在呼叫 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.
    }
})

若要避免封鎖造成應用程式變慢的 UI 線程,請考慮隨時搭配回呼使用 thenAccept

在背景工作線程上,您可以呼叫 {AnyAsyncApi}().get()

回呼範例:

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")
}

同步範例:

boolean enabled = AppCenter.isEnabled().get();
val enabled = AppCenter.isEnabled().get()