重要
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 指南中详细了解该 API。
注释
此方法应仅在 AppCenter
启动后使用,在启动前,它将始终返回 null
。
标识用户
App Center SDK 支持设置用户 ID,用于增强崩溃报告。 若要使用此功能,
AppCenter.setUserId("your-user-id");
AppCenter.setUserId("your-user-id")
设置用户 ID 后,可以使用 App Center 的搜索功能搜索 ID 的特定故障报告。 在 App Center 的 搜索文档中了解详细信息。
注释
用户 ID 的值限制为 256 个字符。 它将随故障报告一起显示,但不用于聚合或受影响用户的计数。 如果多次设置用户 ID,则只会使用最后一个用户 ID。 需要在每次应用程序启动之前自行设置用户 ID,因为此值不会由 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 指南中详细了解该 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
启动。
它将返回使用 setNetworkRequestsAllowed
或 true
设置的最后一个值,如果该值在 AppCenter 启动之前未被更改。
在运行时更改服务状态
使用以下代码在运行时启用或禁用服务:
Analytics.setEnabled(false);
Analytics.setEnabled(false)
注释
此方法只能在启动 Analytics
后使用。
检查是否已启用 App Center
还可以检查 App Center 是否已启用。
AppCenter.isEnabled();
AppCenter.isEnabled()
此 API 是异步的,可以在 App Center 异步 API 指南中详细了解该 API。
注释
此方法应仅在 AppCenter
启动后使用,在启动前,它将始终返回 false
。
在运行时检查应用中心 SDK 版本
可以获取当前正在使用的 App Center SDK 版本。
AppCenter.getSdkVersion();
AppCenter.getSdkVersion()
存储大小
使用 App Center SDK 时,日志存储在设备本地。 大型日志可能会占用大量空间,因此可以选择限制本地数据库的大小。 它还可以与 pause
和 resume
API 结合使用。 如果希望暂停很长时间,则可以使用更大的数据库大小来存储更多事件。
可以使用 setMaxStorageSize
API 设置本地数据库的大小。 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()