← 返回
未分类 Key

Andorid Flyverify Integration

Interactive guide for integrating MobTech FlyVerify (SecVerify) into Android projects with 5-step workflow. Use when user says "我要在app中增加一键登录", "秒验集成", "FlyV...
交互式指南,帮助将 MobTech FlyVerify (SecVerify) 集成到 Android 项目,采用 5 步工作流。适用于用户说“我要在 app 中增加一键登录”、“秒验集成”、“FlyV...”
mobsupport
未分类 clawhub v2.0.0 1 版本 100000 Key: 需要
★ 1
Stars
📥 399
下载
💾 0
安装
1
版本
#latest

概述

Android FlyVerify (秒验) 集成 Skill

适用场景

当用户提到以下任一主题时,使用本 skill:

  • android flyverify
  • android secverify
  • 秒验集成
  • 一键验证/一键登录
  • 手机号免密验证
  • 运营商网关认证
  • FlyVerify SDK 接入
  • 我要在app中增加一键登录
  • 我要在Android项目中接入秒验功能
  • 帮我配置一键登录
  • 一键集成 FlyVerify
  • 快速接入秒验
  • 自动配置 FlyVerify

如果用户问题明确与 Android 的秒验接入、工程配置、一键验证功能、自定义 UI 有关,应优先使用本 skill。


5 步交互式集成工作流

当用户表达集成 FlyVerify 的意图时,执行以下 5 步交互式流程。每步操作前都需要展示内容给用户确认,获得明确同意后再执行。


步骤 1:启动流程

1-1 触发识别

用户可能通过以下方式表达集成意图:

  • "我要在app中增加一键登录"
  • "帮我集成 FlyVerify 到 Android 项目"
  • "配置一键登录"
  • "一键集成秒验"
  • "Android 一键登录功能怎么接入"

1-2 询问项目路径

主动询问用户

我来帮你集成 FlyVerify 一键登录功能。

请提供需要集成的 Android 项目根路径,例如:
/Users/xxx/your-android-project

请确保项目包含 app/build.gradle 文件。

⚠️ 注意:FlyVerify所集成的项目 需要在 MobTech 后台提交秒验审核并通过后才能正常使用。

1-3 验证路径合法性

验证逻辑

  1. 检查路径是否存在
  2. 检查路径下是否有 app/build.gradlesettings.gradle 文件
  3. 检查是否为有效的 Android 项目结构

如果路径不合法

路径验证失败,可能原因:
- 路径不存在:{path}
- 未找到 app/build.gradle 文件,请确认这是 Android 项目根目录

请重新提供正确的项目路径。

如果路径合法:进入步骤 2


步骤 2:注册 FlyVerify 配置信息

2-1 生成配置模板文件

操作

  1. 执行 assets/generate_excel_template.py,生成 assets/FlyVerify_Config_Template.xlsx
  2. 将生成的 assets/FlyVerify_Config_Template.xlsx 复制到 {path}
  3. {path} 下命名为 FlyVerify_Config.xlsx

告知用户

已在你项目的根目录生成 {path}/FlyVerify_Config.xlsx 配置文件。

请打开该文件,按以下步骤填写:
1. 在"基础信息"Sheet 中填写 MobTech 的 appKey 和 appSecret
   (从 https://www.mob.com/ 注册应用获取)
2. 填写 Android 包名和签名 MD5
3. 确认秒验审核是否已通过
4. "隐私合规"Sheet 中有隐私政策说明
5. "填写说明"Sheet 中有详细说明

⚠️ 重要提醒:
- 秒验审核通过后才能正常使用一键验证功能
- 请前往 MobTech 后台提交秒验审核

填写完成后告诉我"填好了",我将继续下一步。

2-2 等待用户填写完成

等待用户回复"填好了"或类似表达。

2-3 读取并验证配置

操作:读取用户项目根目录的 FlyVerify_Config.xlsx 文件

验证规则

检查项规则不通过时的提示
-----------------------------
appKey必填,不能为空字符串"基础信息 Sheet 中的 appKey 未填写,请从 MobTech 官网获取"
appSecret必填,不能为空字符串"基础信息 Sheet 中的 appSecret 未填写"
包名必填,格式应为 com.xxx.xxx"包名格式不正确,应为 com.xxx.xxx 格式"

类型转换规则

  • appKeyappSecret包名 等标识符字段:强制转为字符串(加引号)

如果不合法

配置信息验证失败,请修正以下问题:

{具体问题列表}
- 第 1 条:{问题描述}
- 第 2 条:{问题描述}

请修改 Excel 文件后保存,然后重新告诉我"填好了"。

如果合法:提取配置信息,进入步骤 3


步骤 3:完成 SDK 集成

3-1 Gradle 环境配置

根据项目 AGP 版本(通过检查 gradle/wrapper/gradle-wrapper.properties 中的 distributionUrl 判断),选择对应配置方式。

【7.0及以上版本】

文件 1:settings.gradle(AGP 7.0+)

展示内容

pluginManagement {
    repositories {
        maven { url "https://mvn.zztfly.com/android" }
    }
}

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories {
        maven { url "https://mvn.zztfly.com/android" }
    }
}
文件 2:项目级 build.gradle

展示内容

buildscript {
    dependencies {
        classpath 'cn.fly.sdk:FlySDK:+'
    }
}

7.0以下版本

  1. 打开Android Studio项目级build.gradle文件。
  2. 在allprojects ->repositories里面配置maven仓地址。
  3.    allprojects {
           repositories {
               maven {
                   url "https://mvn.zztfly.com/android"
               }
           }
       }
    
  4. 在buildscript->repositories中配置maven仓地址。
  5.    buildscript {
           repositories {
               maven {
                   url "https://mvn.zztfly.com/android"
               }
           }
       }
    
  6. 在buildscript->dependencies中配置AppGallery Connect插件地址
  7.    buildscript {
           dependencies {
               //增加SDK插件配置
               classpath 'cn.fly.sdk:FlySDK:+'
           }
       }
    
文件 3:gradle.properties

主动询问是否上架googleplay

如果开发者回答:是/YES

则配置

MobSDK.spEdition=GPP

否则(否/NO): 则使用如下配置

MobSDK.spEdition=FP
文件 4:app/build.gradle

生成规则

  1. 类型转换appKeyappSecret 等标识符:强制转为字符串(加引号)

展示内容

// 在文件开头添加插件
apply plugin: 'cn.fly.sdk'

// 在文件末尾添加 FlySDK 配置
FlySDK {
    appKey "{用户填写的appKey}"
    appSecret "{用户填写的appSecret}"
    FlyVerify {}
}

询问:"以上是要添加到 app/build.gradle 的内容,是否确认修改?"

3-2 执行 Gradle Sync

说明:修改 build.gradle 后,需要同步 Gradle 配置才能生效:

  • 命令行 ./gradlew:下载依赖、编译代码
  • Android Studio Sync:让 IDE 解析 build.gradle 配置,更新项目结构索引

两者作用不同,即使命令行成功,仍建议在 Android Studio 中执行 Sync。

尝试自动执行

cd {project_path}
./gradlew --refresh-dependencies

如果成功

命令行 Gradle Sync 成功,依赖已拉取。

⚠️ 如果你在 Android Studio 中开发,请再执行一次 IDE Sync:
1. 打开 Android Studio
2. 点击菜单栏 File -> Sync Project with Gradle Files
3. 或点击右上角大象图标(Sync Now)

如果失败

自动 Gradle Sync 失败,可能原因:
- Gradle 未配置环境变量
- 网络问题无法下载依赖

请在 Android Studio 中手动执行:
1. 打开项目
2. 点击菜单栏 File -> Sync Project with Gradle Files
3. 或点击 Gradle 面板中的刷新按钮

至此,Gradle集成方式环境搭建已经完成。

进入步骤 4


步骤 4:补充说明

4-1 说明隐私授权

向用户说明

根据 MobTech 隐私合规要求,使用 FlyVerify 需要在用户同意隐私政策后才能初始化 SDK。

你需要在 App 中:
1. 首次启动时展示《隐私政策》弹窗
2. 用户点击"同意"按钮后,调用隐私授权代码
3. 用户点击"不同意"则不应调用

请告知我:用户点击隐私政策"同意"按钮的回调代码在哪个文件、哪个方法中?
例如:MainActivity.java 的 onPrivacyAgreed() 方法

等待用户告知具体的文件路径和方法名。

展示要插入的代码

// 用户同意隐私政策后调用
FlySDK.submitPolicyGrantResult(true, null);

完整示例

public void onPrivacyAgreed() {
    // 用户点击同意按钮
    
    // === FlyVerify 隐私授权 ===
    cn.fly.FlySDK.submitPolicyGrantResult(true, null);
    // ==========================
    
    // 其他业务逻辑...
}

4-2 确认隐私授权代码

询问"以上代码将插入到 {文件} 的 {方法} 中,是否确认?"

4-3 执行插入

用户确认后,将代码插入指定位置。

进入步骤 5


步骤 5:插入手机号一键验证代码

5-1 询问是否使用预登录功能

说明:预登录(preVerify)可以提前检测网络环境并获取临时凭证,建议在登录页面打开前调用。

询问"是否需要在项目中添加预登录功能?"

如果开发者回答:否/NO → 跳过 5-2 和 5-3,直接进入 5-4

如果开发者回答:是/YES → 继续 5-2

5-2 展示并插入预登录代码

等待用户告知:要插入预登录代码的文件路径和方法名。

展示要插入的代码

// 建议提前调用预登录接口,可以加快免密登录过程,提高用户的体验。
FlyVerify.preVerify(new PreVerifyCallback() {
    @Override
    public void onComplete(Void data) {
        // TODO 处理成功的结果
    }
    @Override
    public void onFailure(VerifyException e) {
        // TODO 处理失败的结果
        // 获取错误码
        int errCode = e.getCode();
        // 获取SDK返回的错误信息
        String errMsg = e.getMessage();
        // 更详细的网络错误信息可以通过t查看,注:t有可能为null,也可用于获取运营商返回的错误信息
        Throwable t = e.getCause();
        String errDetail = null;
        if (t != null) {
            errDetail = t.getMessage();
        }
    }
});

完整示例

public void initLogin() {
    // === FlyVerify 预登录 ===
    FlyVerify.preVerify(new PreVerifyCallback() {
        @Override
        public void onComplete(Void data) {
            // TODO 处理成功的结果
        }
        @Override
        public void onFailure(VerifyException e) {
            // TODO 处理失败的结果
        }
    });
    // =======================
    
    // 其他登录相关逻辑...
}

询问"以上代码将插入到 {文件} 的 {方法} 中,是否确认?"

用户确认后,将代码插入指定位置。

5-3 询问是否使用一键登录功能

说明:一键登录(verify)将拉起运营商授权页面,用户授权后获取 token。

询问"是否需要添加一键登录功能?"

如果开发者回答:否/NO → 跳过 5-4 和 5-5,直接进入步骤 6

如果开发者回答:是/YES → 继续 5-4

5-4 展示并插入登录代码

等待用户告知:要插入登录代码的文件路径和方法名。

展示要插入的代码

FlyVerify.verify(new VerifyCallback() {
    @Override
    public void onOtherLogin() {
        // 用户点击"其他登录方式",处理自己的逻辑
    }
    @Override
    public void onUserCanceled() {
        // 用户点击"关闭按钮"或"物理返回键"取消登录,处理自己的逻辑
    }
    @Override
    public void onComplete(VerifyResult verifyResult) {
        // 获取授权码成功,将token信息传给应用服务端,再由应用服务端进行登录验证,此功能需由开发者自行实现
        // opToken
        String opToken = verifyResult.getOpToken();
        // token
        String token = verifyResult.getToken();
        // 运营商类型,[CMCC:中国移动,CUCC:中国联通,CTCC:中国电信]
        String operator = verifyResult.getOperator();
    }
    @Override
    public void onFailure(VerifyException e) {
        // TODO 处理失败的结果
    }
});

完整示例

public void doLogin() {
    // === FlyVerify 一键登录 ===
    FlyVerify.verify(new VerifyCallback() {
        @Override
        public void onOtherLogin() {
            // 用户点击"其他登录方式"
        }
        @Override
        public void onUserCanceled() {
            // 用户取消登录
        }
        @Override
        public void onComplete(VerifyResult verifyResult) {
            String token = verifyResult.getToken();
            // 将 token 传给服务端进行登录验证
        }
        @Override
        public void onFailure(VerifyException e) {
            // TODO 处理失败的结果
        }
    });
    // =======================
}

询问"以上代码将插入到 {文件} 的 {方法} 中,是否确认?"

用户确认后,将代码插入指定位置。


步骤 6:完成集成

6-1 生成项目级 README

操作:在用户项目根目录生成 FLYVERIFY_README.md,内容包含集成说明、关键文件位置、后续修改指引。

6-2 完成告知

向用户说明

FlyVerify 集成已完成!

📁 生成的文件:
- {project_path}/FLYVERIFY_README.md — 集成说明文档

📝 后续修改位置:
- 修改 SDK 配置:app/build.gradle 中的 FlySDK { } 块
- 修改隐私授权位置:{privacy_file} 的 {privacy_method} 方法

📖 更多帮助:
- 官方文档:https://www.mob.com/wiki/detailed?wiki=551&id=78
- SDK API:https://www.mob.com/wiki/detailed?wiki=297&id=78
- 合规指南:https://www.mob.com/wiki/detailed?wiki=421&id=717

⚠️ 重要提醒:
1. 确保秒验审核已通过(否则无法正常使用)
2. 确保包名与 MobTech 后台配置一致
3. 确保签名 MD5 与后台配置一致
4. 必须使用移动蜂窝网络(WiFi 下可能无法取号)
5. Android 9.0+ 需配置 usesCleartextTraffic="true"
6. App 有隐私政策并在用户同意后调用隐私授权代码

附录:技术参考

A. Gradle 配置参考

A.1 Gradle 插件 7.0 及以上

settings.gradle 第1行开始填充:

pluginManagement {
    repositories {
        maven { url "https://mvn.zztfly.com/android" }
    }
}

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories {
        maven { url "https://mvn.zztfly.com/android" }
    }
}

在项目级 build.gradle 中:

buildscript {
    dependencies {
        classpath 'cn.fly.sdk:FlySDK:+'
    }
}

A.2 Gradle 插件 7.0 以下

在项目级 build.gradle 中配置:

allprojects {
    repositories {
        maven { url "https://mvn.zztfly.com/android" }
    }
}
buildscript {
    repositories {
        maven { url "https://mvn.zztfly.com/android" }
    }
    dependencies {
        classpath 'cn.fly.sdk:FlySDK:+'
    }
}

A.3 应用级启用插件

apply plugin: 'cn.fly.sdk'

A.4 gradle.properties 配置

主动询问是否上架googleplay

如果开发者回答:是/YES

则配置

MobSDK.spEdition=GPP

否则(否/NO)

MobSDK.spEdition=FP

B. 预取号接口

预取号可以提前获取一键登录的临时凭证,优化用户体验。建议在页面打开前或网络空闲时调用。

// 建议提前调用预登录接口,可以加快免密登录过程,提高用户的体验。
FlyVerify.preVerify(new PreVerifyCallback() {
    @Override
    public void onComplete(Void data) {
        // TODO处理成功的结果
    }
    @Override
    public void onFailure(VerifyException e) {
        // TODO处理失败的结果
        // 获取错误码
        int errCode = e.getCode();
        //获取SDK返回的错误信息
        String errMsg = e.getMessage();   
        // 更详细的网络错误信息可以通过t查看
        Throwable t = e.getCause();
        String errDetail = null;
        if (t != null) {
            errDetail = t.getMessage();
        }
    }
});

C. 一键验证/登录

调用验证接口拉起运营商授权页:

FlyVerify.verify(new VerifyCallback() {
    @Override
    public void onOtherLogin() {
        // 用户点击"其他登录方式",处理自己的逻辑
    }
    @Override
    public void onUserCanceled() {
        // 用户点击"关闭按钮"或"物理返回键"取消登录
    }
    @Override
    public void onComplete(VerifyResult verifyResult) {
        // 获取授权码成功,将token信息传给应用服务端
        // opToken
        String opToken = verifyResult.getOpToken();   
        // token
        String token = verifyResult.getToken();   
        // 运营商类型,[CMCC:中国移动,CUCC:中国联通,CTCC:中国电信]
        String operator = verifyResult.getOperator();   
    }
    @Override
    public void onFailure(VerifyException e) {
        //TODO处理失败的结果
    }
});

D. SDK API 补充

D.1 设置调试模式

FlySDK.setDebugMode(true);

D.2 超时设置

// 超时时间,单位ms,取值1000-10000,默认5000ms
FlySDK.setTimeOut(5000);

D.3 关闭自带loading

CommonProgressDialog.dismissProgressDialog();

D.4 主动关闭授权页面

FlySDK.finishOAuthPage();

E. 自定义 UI 配置

E.1 竖屏UI

UiSettings uiSettings = new UiSettings.Builder()
    // 导航栏配置
    .setNavColor(Color.parseColor("#FFFFFF"))
    .setNavTextColor(Color.parseColor("#000000"))
    // Logo配置
    .setLogoResId(R.drawable.ic_logo)
    // 手机号配置
    .setNumberColor(Color.parseColor("#333333"))
    // 登录按钮配置
    .setLoginBtnText("本机号码一键登录")
    .setLoginBtnColor(Color.parseColor("#1677FF"))
    // 协议配置
    .addAgreement("https://example.com/privacy", "《隐私政策》")
    .build();

FlyVerify.setUiSettings(uiSettings);

E.2 横屏UI

LandUiSettings landUiSettings = new LandUiSettings.Builder()
    // 横屏UI配置
    .build();

FlyVerify.setLandUiSettings(landUiSettings);

F. 隐私合规要求

必须提醒用户:

  1. App 需要有《隐私政策》
  2. 隐私政策中必须明确说明使用秒验 SDK 进行一键验证/登录
  3. 首次冷启动展示隐私政策并获取用户同意
  4. 同意后调用 FlySDK.submitPolicyGrantResult(true, null)
  5. 不同意时不能调用该方法

在隐私政策中应包含:

  • 使用了 MobTech 秒验服务
  • 用于一键验证/登录功能
  • 涉及运营商网关认证和手机号验证
  • 可能会收集相关信息

完整合规指南:https://www.mob.com/wiki/detailed?wiki=421&id=717


G. 常见问题排查

问题可能原因
----------------
取号失败秒验审核未通过、签名MD5不一致、包名不一致
无法拉起授权页未开启移动蜂窝网络、Android 9.0+未配置usesCleartextTraffic
WiFi下无法取号秒验必须使用移动蜂窝网络
授权页拉起失败运营商不支持、网络异常

回答边界

  • 仅聚焦 Android FlyVerify 工程集成与合规
  • 不扩展到 iOS、服务端、非 MobTech SDK
  • 不伪造真实账号、密钥、签名值

版本历史

共 1 个版本

  • v2.0.0 当前
    2026-05-03 10:37 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

Android Moblink Integration

mobsupport
交互式指南,帮助在 Android 项目中集成 MobTech MobLink,提供一步步的工作流程。适用于用户提到 "MobLink集成"、"Link集成"、"Android深度链接" 等关键词时。
★ 0 📥 307

Harmonyos Sharesdk Integretion

mobsupport
交互式指南:在HarmonyOS NEXT项目中集成MobTech ShareSDK,用于ShareSDK分享或华为授权。
★ 0 📥 313

Android Mobpush Integration

mobsupport
交互式指南,帮助将 MobTech MobPush 集成到 Android 项目,包含 6 步工作流。适用于用户说“我要在 app 中增加推送能力”“MobPush 集成”“Android 推送功能”等场景。
★ 0 📥 380