搜索
开发文档
应用开发
快应用开发
快游戏开发
开发文档/应用开发/服务能力/网页秒开引擎/客户端接入指南
客户端接入指南更新时间: 2025-04-27 16:28:00

<application ..>一、使用说明

1、快速打开网页

此操作会打开一个全屏的自定义标签页,并支持自定义UI

2、预热:

  • 定义:使用自定义标签服务,提升网页打开速度
  • 技术实现:通过 prepare 加快浏览器启动速度以及预提取网页
  • 效率提升:在打开链接时,浏览器进程的预热时间最长可节省40%

二、开发流程

三、开发步骤

添加 App Id 和构建版本 Debug 标识

  • App Id

com.xiaomi.xms.APP_ID
当开通服务时,会生成 App Id 唯一标识,用于鉴权
必须配置 App Id,调用服务时会通过 App Id 进行鉴权

  • 构建版本 Debug 标识

com.xiaomi.xms.BUILD_TYPE_DEBUG
当前 APK 是否为 Debug 构建版本。若不配置,默认为 false

备注:鉴权时会验证应用 apk 签名。开发调试阶段,一般不会运行 Release 签名的 apk,通常都是运行 Debug 签名 apk,为了保证在开发阶段仍然可以鉴权成功,开发者可以在平台同时添加正式证书指纹(Release 签名)和测试证书指纹(Debug 签名),用于不同场景下鉴权。

  • 在应用的 AndroidManifest.xml 中添加 meta-data 配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>

<meta-data
android:name="com.xiaomi.xms.APP_ID"
android:value="your app id here" />

<meta-data
android:name="com.xiaomi.xms.BUILD_TYPE_DEBUG"
android:value="true or false" />

</application>
</manifest>

1、混淆配置

如果您需要使用proguard混淆代码,需确保不要混淆SDK的代码。
在proguard-rules.pro文件下添加

#MiCT
-keep class com.android.browser.customtabs.** implements java.io.Serializable { *; }

2、小米开放平台申请权限,并在项目AndroidManifest.xml进行配置

<application ..>
<meta-data
android:name="com.xiaomi.xms.APP_ID"
android:value="11111111" />
<meta-data
android:name="com.xiaomi.xms.BUILD_TYPE_DEBUG"
android:value="true" />
..
</application>

3、AndroidManifest.xml配置查询权限,检查是否支持MiCT秒开能力

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<queries>
<intent>
<action android:name="com.android.browser.customtabs.action.CustomTabsService" />
</intent>
</queries>
</manifest>

4、初始化MiCT,判断鉴权是否通过

CustomTabsHelper.getInstance().auth(this, callback)

5、设置MiCT服务相关能力回调监听

CustomTabsHelper.getInstance().setCustomTabsCallback(object : CustomTabsCallback() {
override fun extraCallback(callbackName: String, args: Bundle?) {
super.extraCallback(callbackName, args)
when (callbackName) {
"firstContentRendered" -> {
// 页面加载完成回调,获取页面加载成功失败状态
val success = args?.getBoolean("success", true) ?: false
val data = args?.getBundle(CustomTabsIntent.EXTRA_TRANSMISSION_DATA)
}
}
}

override fun onWarmupCompleted(extras: Bundle) {
// 预热完成
Log.d(TAG, "onWarmupCompleted")
}
})

6、预热网页

CustomTabsHelper.getInstance().prepare(this, "https://mi.com/")

7、打开MiCT网页

CustomTabsHelper.getInstance()
.openCustomTab(this@MainActivity, Uri.parse(url)) { activity, uri ->
// 添加打开失败处理
startActivity(
Intent(activity, WebViewActivity::class.java).setData(uri)
)
}

8、自定义界面

CustomTabsHelper.getInstance().openCustomTab(this, uri, CustomTabsIntent.Builder().apply{
setDefaultColorSchemeParams(CustomTabColorSchemeParams.Builder().apply {
// 设置标题栏颜色
setToolbarColor(Color.parseColor("#0D84FF"))
}.build())

// 可选,设置标题栏深色模式颜色,未设置默认适配黑色
setColorSchemeParams(
CustomTabsIntent.COLOR_SCHEME_DARK,
CustomTabColorSchemeParams.Builder().apply {
setToolbarColor(Color.parseColor("#51211E"))
}.build()

setShowTitle(true) // 设置标题显示状态
setShowDomain(false) // 设置地址域名显示状态
setBackIconStyle(true) // 是否显示返回按钮,默认显示 X 按钮
setShowMenu(true) // 是否显示右上角菜单选项
)
}.build())

9、使用JavascriptInterface接口能力

9.1、通知浏览器MiCT准备JS接口类

CustomTabsHelper.getInstance().preloadJavascriptInterface(TestJs.class)

例: TestJs.java
class TestJs {@
JavascriptInterface
public String getPackageName() {
return "com.demo"
}
}

9.2、打开页面,并调用addJavascriptInterface注入对应JS接口实例

CustomTabsHelper.getInstance().openCustomTab(this, Uri.parse(URL),
CustomTabsIntent.Builder().apply {
addJavascriptInterface(TestJs(this@CustomJSActivity), "test")
}.build()
)

9.3、网页即可调用对应Native方法

举例:window.test.getPackageName()

四、 接口说明/API参考文档/调用方式说明

1、API接口文档

1.1 接口概述
SDK能力统一调用类 CustomTabsHelper、打开失败回调CustomTabFallback、服务连接状态监听ConnectionCallback、服务能力回调CustomTabsCallback、鉴权状态回调 AuthCallback
(1)CustomTabsHelper 能力统一管理类,采用单例模式,通过getInstance()获取该对象

API接口 功能
init(Context context)初始化调用,建议在Application中调用
auth(Context context, CustomTabsAuth.AuthCallback authCallback)初始化MiCT服务,获取平台鉴权状态
supportMiCustomTabs(Context context)是否支持浏览器MiCT能力
prepare(Context context, String url)预热网页
setConnectionCallback(ConnectionCallback callback)监听服务连接状态
setCustomTabsCallback(CustomTabsCallback callback)监听网页预热、加载成功状态
bindService(Context context)绑定服务,建议在ConnectionCallback连接断开时调用
openCustomTab(Activity activity, Uri uri, CustomTabFallback callback)使用小米浏览器MiCT页面打开链接
openCustomTab(Context context, Uri uri, CustomTabsIntent intent, CustomTabFallback callback)设置自定义参数,并打开MiCT页面
unbindService(Context context)解绑服务
release(Context context)释放服务,不需要网页相关服务时调用
preloadJavascriptInterface(Class<?> clazz)

(2)AuthCallback 鉴权状态回调

API接口 功能
onSuccess()鉴权成功
onError(int code, String message, Bundle extraBundle)鉴权失败

(3)CustomTabFallback MiCT打开失败回调

API接口 功能
void openUri(Context context, Uri uri);打开失败处理,使用兜底重新打开页面

(4)ConnectionCallback 服务连接状态监听

API接口 功能
onCustomTabsConnected服务连接成功
onCustomTabsDisconnected服务连接断开

(5)CustomTabsCallback 服务能力回调

API接口 功能
extraCallback(@NonNull String callbackName, @Nullable Bundle args)通用能力回调,如网页加载状态
onWarmupCompleted(@NonNull Bundle extras)预热执行成功

1.2 API接口明细

(1)void init(Context context)
功能介绍:全局初始化
接口定义:void int(Context context)
返回值:无
参数说明

  • Context 为当前页面context对象

补充:建议在Application初始化后调用
(2)void auth(Context context, CustomTabsAuth.AuthCallback authCallback)
功能介绍:初始化鉴权
接口定义:void auth(Context context, CustomTabsAuth.AuthCallback authCallback)
返回值:无,通过AuthCallback监听鉴权状态回调
参数说明

  • Context 为当前页面context对象
  • AuthCallback 鉴权状态回调处理

补充:建议调用能力之前鉴权,避免功能使用过程中出现异常
示例

val callback = object : AuthCallback {
override fun onError(code: Int, message: String?, extraBundle: Bundle?) {
Log.d(TAG, "auth failed")
}

override fun onSuccess() {
Log.d(TAG, "auth success")
}
}
CustomTabsHelper.getInstance().auth(this, callback)

(3)prepare(Context context, String url)
功能介绍:预热网页
接口定义:void prepare(Context context, String url)
返回值:无
参数说明

  • url,网页链接,以http/https开头

补充:建议网页加速需求,在View展示时提前调用
示例

CustomTabsHelper.getInstance().prepare(this, url)

(4)openCustomTab(Context context, Uri uri, CustomTabsIntent intent, CustomTabFallback callback)
功能介绍:打开MiCT页面
接口定义:void openCustomTab(Context context, Uri uri, CustomTabsIntent intent, CustomTabFallback callback)
返回值:无
参数说明

  • uri,网页链接,以http/https开头
  • CustomTabsIntent 自定义UI属性设置
  • CustomTabFallback 打开失败处理

补充:其他调用方式请查看其重载方法
示例

CustomTabsHelper.getInstance().openCustomTab(this, uri, CustomTabsIntent.Builder().apply{
setDefaultColorSchemeParams(CustomTabColorSchemeParams.Builder().apply {
// 设置标题栏颜色
setToolbarColor(Color.parseColor("#0D84FF"))
}.build())

// 可选,设置标题栏深色模式颜色,未设置默认适配黑色
setColorSchemeParams(
CustomTabsIntent.COLOR_SCHEME_DARK,
CustomTabColorSchemeParams.Builder().apply {
setToolbarColor(Color.parseColor("#51211E"))
}.build()

setShowTitle(true) // 设置标题显示状态
setShowDomain(false) // 设置地址域名显示状态
setBackIconStyle(true) // 是否显示返回按钮,默认显示 X 按钮
setShowMenu(true) // 是否显示右上角菜单选项
)
}.build())

(5)release(Context context)
功能介绍:释放MiCT服务
接口定义:void release(Context context)
返回值:无
参数说明
补充:不需要网页服务的地方,调用该方法释放该MiCT服务,优化性能
示例

CustomTabsHelper.getInstance().release(this)

2、错误码

错误码描述解决方法
RESULT_CODE_ERROR_AUTH_INFO_FETCHING_FAILED-200鉴权信息获取失败,没有鉴权信息请检查是否AndroidManifest是否正常配置APPID等参数
RESULT_CODE_ERROR_AUTH_FAILED-300鉴权失败,比如三方应用签名问题请检查平台签名是否填写正确

五、代码参考demo下载

  • 名称:MiBrowserDemo.zip
  • 地址:https://kpan.mioffice.cn/webfolder/ext/W7C%23%23LoLG2z%24uVm31GQvyw%40%40?n=0.24732610421319534
  • 密码:07DS

上一篇:开发准备
下一篇:系统能力案例分享|解锁应用内H5“秒开”能力
文档内容是否有帮助?
有帮助
无帮助