這很重要
Visual Studio App Center 於 2025 年 3 月 31 日淘汰,但分析和診斷功能除外,這些功能將持續支援到 2026 年 6 月 30 日。 瞭解更多資訊。
調整記錄層級
您可以透過 App Center 控制顯示在 LogCat 中的記錄訊息數量。 使用AppCenter.setLogLevel()
API 在偵錯過程中啟用額外的日誌記錄。 記錄層級會對應至 中 android.util.Log
定義的記錄層級。 根據預設,它會將不可偵錯的應用程式設定為ASSERT
,而可偵錯的應用程式設定為WARN
。 您可以隨時設定記錄層級。
若要擁有盡可能多的記錄訊息,請使用 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 支援設定使用者標識碼來增強當機報告。 若要使用這項功能:
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
啟動。
**
如果在 AppCenter 启动之前值没有更动,它会返回使用 setNetworkRequestsAllowed
或 true
所设定的最后一个值。
變更運行時間中的服務狀態
使用下列程式代碼在執行時間啟用或停用服務:
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 時,記錄會儲存在本機裝置上。 大型記錄可能會佔用大量空間,因此您可以選擇限制本機資料庫的大小。 它也可與pause
和resume
API 搭配使用。 如果您預期會暫停很長一段時間,您可以使用較大的資料庫大小來儲存更多事件。
您可以使用 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 已經被呼叫。 每個進程只能設定一次。
-
AppCenter.start(...)
之後已呼叫 API。
您可以使用記錄標籤來檢查主控台 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()