Install
openclaw skills install android-moblink-integrationInteractive guide for integrating MobTech MobLink into Android projects with step-by-step workflow. Use when user says "MobLink集成", "Link集成", "Android深度链接", "场景还原", "一键集成 MobLink", or asks about MobLink Gradle configuration, uriScheme, AppLink Host, getMobID, scene restore, SceneRestorable, privacy compliance, or MobCustomController setup.
openclaw skills install android-moblink-integration当用户提到以下任一主题时,使用本 skill:
如果用户问题明确与 Android 的 MobLink 接入、工程配置、场景还原、隐私合规有关,应优先使用本 skill。
使用以下官方文档作为事实来源:
关键事实:
minSdkVersion 19。https://mvn.mob.com/android。classpath "com.mob.sdk:MobSDK2:+"。com.mob.sdk 插件。MobSDK { appKey "..."; appSecret "..."; MobLink { uriScheme "..."; appLinkHost "..." } } 是核心配置。MobSDK.spEdition=GPP。MobSDK.spEdition=IZNAO;合规指南中说明隐私协议适配版本为 MobSDK.spEdition=FP。生成时必须向用户确认上架渠道与版本选择。MobSDK.submitPolicyGrantResult(true),或使用 MobSDK.submitPolicyGrantResult(MobCustomController cont, true)。每步操作前都需要展示内容给用户确认,获得明确同意后再执行。
我来帮你集成 MobLink 场景还原功能。
请提供需要集成的 Android 项目根路径,例如:
/path/to/your-android-project
请确保项目包含 settings.gradle 或 app/build.gradle 文件。
验证逻辑:
settings.gradle 或 settings.gradle.kts。app/build.gradle 或 app/build.gradle.kts。如果路径不合法:
路径验证失败,可能原因:
- 路径不存在:{path}
- 未找到 settings.gradle / settings.gradle.kts
- 未找到 app/build.gradle / app/build.gradle.kts
请重新提供正确的 Android 项目根路径。
如果路径合法:进入步骤 2。
操作:
assets/generate_excel_template.py,生成 assets/MobLink_Config_Template.xlsxassets/MobLink_Config_Template.xlsx 复制到 {path} 下{path} 下命名为 MobLink_Config.xlsx告知用户:
已在你项目的根目录生成 {path}/MobLink_Config.xlsx 配置文件。
请打开该文件,按以下步骤填写:
1. 在"基础信息"Sheet 中填写 MobTech 的 appKey、appSecret、包名和签名 MD5
2. 在"MobLink配置"Sheet 中填写 uriScheme、appLinkHost 和默认场景路径
3. 在"隐私合规"Sheet 中确认隐私政策、授权回调和扩展采集控制配置
4. "填写说明"Sheet 中有官方文档链接和字段说明
填写完成后告诉我"填好了",我将继续下一步。
等待用户回复“填好了”“已填写”或类似表达。
操作:读取 {path}/MobLink_Config.xlsx。
验证规则:
| 检查项 | 规则 | 不通过时的提示 |
|---|---|---|
| appKey | 必填,不能为空字符串 | "基础信息 Sheet 中的 appKey 未填写,请从 MobTech 官网获取" |
| appSecret | 必填,不能为空字符串 | "基础信息 Sheet 中的 appSecret 未填写" |
| packageName | 必填,建议符合 com.xxx.xxx 格式 | "包名格式不正确,应类似 com.example.app" |
| uriScheme | 建议填写,来自 MobLink 后台配置 | "MobLink uriScheme 未填写,可能影响 scheme 唤醒" |
| appLinkHost | 建议填写,来自 MobLink 后台开启 AppLink 时生成的 Host | "MobLink appLinkHost 未填写,可能影响 AppLink 唤醒" |
| defaultScenePath | 如填写,建议以 / 开头 | "场景路径建议以 / 开头,例如 /demo/a" |
| useGooglePlayEdition | 转为布尔值 | "是否上架 Google Play 请填写 是/否 或 true/false" |
| 隐私合规布尔项 | 转为布尔值 | "隐私合规配置请填写 是/否 或 true/false" |
类型转换规则:
appKey、appSecret、packageName、signatureMD5、uriScheme、appLinkHost、defaultScenePath、restoreActivity 等标识符字段强制转为字符串。useGooglePlayEdition、privacyPolicyReady、useMobCustomController、allowLocationData、allowDeviceIdData、allowAppListData、allowNetworkData 转为 true / false。如果不合法:
配置信息验证失败,请修正以下问题:
{具体问题列表}
请修改 Excel 文件后保存,然后重新告诉我"填好了"。
如果合法:提取配置信息,进入步骤 3。
根据项目 AGP 版本和 Gradle 文件类型选择 Groovy 或 Kotlin DSL。修改前必须展示将要添加的内容并询问确认。
AGP 7.0+ 的 settings.gradle 示例:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
maven { url "https://mvn.mob.com/android" }
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories {
gradlePluginPortal()
google()
mavenCentral()
maven { url "https://mvn.mob.com/android" }
}
}
项目级 build.gradle:
buildscript {
dependencies {
classpath "com.mob.sdk:MobSDK2:+"
}
}
AGP 7.0 以下项目还需要在项目级 build.gradle 的 allprojects.repositories 和 buildscript.repositories 中加入:
maven { url "https://mvn.mob.com/android" }
根据 Excel 的 useGooglePlayEdition 和用户确认决定:
MobSDK.spEdition=GPPMobSDK.spEdition=FPGroovy DSL 示例:
apply plugin: 'com.mob.sdk'
MobSDK {
appKey "{appKey}"
appSecret "{appSecret}"
MobLink {
uriScheme "{uriScheme}"
appLinkHost "{appLinkHost}"
}
}
如果项目使用 plugins {}:
plugins {
id 'com.android.application'
id 'com.mob.sdk'
}
Kotlin DSL 项目需要按现有风格生成等价配置。若无法确认 MobSDK 插件在 Kotlin DSL 下的准确语法,先向用户展示建议并要求确认。
如果项目启用了混淆,在混淆文件中加入:
-keep class com.mob.**{*;}
-dontwarn com.mob.**
根据 MobTech 合规要求,MobLink 需要在用户同意隐私政策后才能提交授权结果并使用 SDK 功能。
请告知用户点击隐私政策"同意"按钮的回调代码在哪个文件、哪个方法中?
例如:MainActivity.java 的 onPrivacyAgreed() 方法,或具体位置如 app/src/main/java/.../MainActivity.java:80
普通方案:
com.mob.MobSDK.submitPolicyGrantResult(true);
如果用户启用 MobCustomController,展示:
com.mob.MobSDK.submitPolicyGrantResult(new MyMobLinkCustomController(), true);
如需在启动时更新控制器,可展示:
com.mob.MobSDK.updateMobCustomController(new MyMobLinkCustomController());
注意:官方扩展业务文档说明,使用 submitPolicyGrantResult(controller, true) 设置控制器时,必须每次启动 APP 时均调用;如果并非每次启动都会调用隐私提交接口,可以通过 MobSDK.updateMobCustomController() 设置。
用户确认后再执行插入。
询问用户:
现在配置 MobLink 场景还原,请告诉我:
1. 需要在哪个 Activity 承接还原后的场景?
2. 场景路径是什么?例如 /demo/a
3. 需要携带哪些业务参数?例如 articleId、userId、source
4. 是否需要生成 mobID 并拼接到分享链接?
5. 是否已有 Application 类?如果有,请提供路径。
官方建议放到 Application 的 onCreate 中。若 Application 未继承 MobApplication,在设置监听前需要确认是否调用:
MobSDK.init(this, "{appKey}", "{appSecret}");
监听器示例:
MobLink.setRestoreSceneListener(new RestoreSceneListener() {
@Override
public Class<? extends Activity> willRestoreScene(Scene scene) {
return MainActivity.class;
}
@Override
public void notFoundScene(Scene scene) {
// 未找到处理 scene 的 Activity
}
@Override
public void completeRestore(Scene scene) {
// 场景还原完成
}
});
让需要场景还原的 Activity 实现 SceneRestorable,并添加:
@Override
public void onReturnSceneData(Scene scene) {
// 处理场景还原数据
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
MobLink.updateNewIntent(getIntent(), this);
}
HashMap<String, Object> sceneParams = new HashMap<>();
sceneParams.put("key1", "value1");
Scene scene = new Scene();
scene.path = "{defaultScenePath}";
scene.params = sceneParams;
MobLink.getMobID(scene, new ActionListener() {
@Override
public void onResult(String mobID) {
// 根据 mobID 拼接分享链接,例如:url + "&mobid=" + mobID
}
@Override
public void onError(Throwable throwable) {
// 处理错误
}
});
所有代码修改前先展示完整 diff 计划,用户确认后再写入。
操作:在 {path} 下生成 MOBLINK_README.md。
内容应包含:
uriScheme 和 appLinkHost 来源。SceneRestorable 实现位置。getMobID 使用方式。生成前展示内容,用户确认后写入。