秒验集成指南

开发工具:Android Studio

集成方式:Gradle在线集成

安卓版本支持:minSdkVersion 19

集成前准备

注册账号

使用秒验SDK之前,需要先在MobTech官网注册开发者账号并注册应用获取Mob提供的AppKey和AppSecret,详情可以点击 查看创建应用流程

提交审核

一键登录是运营商提供的能力,在使用秒验SDK之前,您需要在Mob开发者后台提交秒验审核,详情可以点击 查看秒验审核流程

秒验SDK流程图

集成配置

秒验SDK提供了两种集成方式,您可根据需要进行选择。需要注意的是,两种集成方式在功能上无任何区别,仅为集成方式不同,选取其中一种即可。

Gradle集成

配置SDK地址

Android Studio的代码库配置方式随Gradle插件的不同版本有所不同。请根据您当前Gradle插件的版本,选择相应的配置方式。

【7.0及以上版本】
  1. 打开项目级"settings.gradle"文件,配置Maven仓地址,注意修改 repositoriesModeRepositoriesMode.PREFER_SETTINGS

    pluginManagement {
        repositories {
            gradlePluginPortal()
            google()
            mavenCentral()
            maven {
                url "https://mvn.mob.com/android"
            }
        }
    }
    dependencyResolutionManagement {
        // repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
        repositories {
            gradlePluginPortal()
            google()
            mavenCentral()
            maven {
                url "https://mvn.mob.com/android"
            }
        }
    }
    
  2. 打开Android Studio项目级build.gradle文件,配置MobSDK插件地址

    buildscript {
        dependencies {
            // 增加MobSDK插件配置
            classpath "com.mob.sdk:MobSDK2:+"
            // 增加google services插件配置,用于集成FCM,不集成FCM可不配置
            classpath 'com.google.gms:google-services:4.3.14'
        }
    }
    
    plugins {
        id 'com.android.application' version 'x.x.x' apply false
        id 'com.android.library' version 'x.x.x' apply false
    }
    
【7.0以下版本】
  1. 打开Android Studio项目级build.gradle文件。

  2. 在allprojects ->repositories里面配置maven仓地址。

    allprojects {
        repositories {
            maven {
                url "https://mvn.mob.com/android"
            }
        }
    }
    
  3. 在buildscript->repositories中配置maven仓地址。

    buildscript {
        repositories {
            maven {
                url "https://mvn.mob.com/android"
            }
        }
    }
    
  4. 在buildscript->dependencies中配置AppGallery Connect插件地址

    buildscript {
        dependencies {
            //增加MobSDK插件配置
            classpath "com.mob.sdk:MobSDK2:+"
        }
    }
    

添加依赖

  1. 打开应用级的build.gradle文件。
  2. 添加mob插件配置。请根据实际情况选择:
  • 方式一:在"com.android.application" 插件下一行添加如下配置。

     apply plugin: 'com.mob.sdk'
    
  • 方式二:在"plugins"中添加如下配置。

     plugins {
         id 'com.android.application'
         id 'com.mob.sdk'
     }
    
  1. 在文件末尾添加mob配置代码

    MobSDK {
        appKey "替换为MobTech官方申请的appkey"
        appSecret "替换为MobTech官方申请的appkey对应的appSecret"
        SecVerify {}
    }
    

配置标识

在gradle.properties中添加代码

MobSDK.spEdition=IZNAO

Google Play 版本

如果您的应用需要上架Google商店,请务必使用Google Play 版本。

在gradle.properties中添加代码,如已添加 MobSDK.spEdition相关配置,则修改值为 GPP即可。

MobSDK.spEdition=GPP

至此,Gradle集成方式已经完成。

离线集成

获取SDK

在进行离线集成之前,请先联系在线客服获取离线SDK。

添加SDK

把获取到的离线SDK包放入项目中的libs文件夹内。

引入SDK

通过上一步添加SDK至项目中后,SDK包还未进行引用,需要添加下方所示引入代码后才可使用。

implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'])

配置清单文件

复制下方提供的清单文件代码至您的项目AndroidManifest.xml文件中。

<manifest
    <application

        <------ start 需要添加的内容 start ------>

        <meta-data
            android:name="Mob-AppKey"
            android:value="您的MOBSDK-Appkey" />
        <meta-data
            android:name="Mob-AppSecret"
            android:value="您的MOBSDK-AppSecret" />
        <provider
            android:name="com.mob.MobProvider"
            android:exported="false"
            android:multiprocess="true"
            android:authorities="${applicationId}.com.mob.MobProvider" />

        <------ end 需要添加的内容 end ------>

    </application>
</manifest>

至此,离线集成方式已经完成。

http协议支持

由于Android 9.0开始,系统强制使用https请求,运营商暂不支持https取号,因此需要关闭9.0系统的强制https功能,请在manifest的 Application 节点增加 usesCleartextTraffic 设置,如下所示:

<application
    android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:usesCleartextTraffic="true">

指定so库(可选)

电信免密登录能力使用了so库,开发者可根据自身应用支持的cpu架构,选择使用不同so库。

// 根据需要选择对应的.so库
android {
    defaultConfig {
        applicationId '您的ApplicationId'
        ndk {
            // 选择要添加的对应 cpu 类型的so库,多个abi以","分隔。
            abiFilters 'armeabi-v7a'
            // 可指定的值为 'armeabi-v7a', 'arm64-v8a', 'armeabi', 'x86', 'x86_64',
            }
        }
}

添加混淆代码

秒验SDK已经做了混淆处理,再次混淆会导致不可预期的错误,请在您的混淆脚本中添加如下的配置,跳过对秒验SDK的混淆操作

-ignorewarnings

#关闭某个运营商功能时编译通不过可以加上下面的代码
#-dontpreverify

# for SecVerify
-keep class com.mob.**{*;}
# for CTCC
-keep class cn.com.chinatelecom.account.**{*;}
# for CUCC
-dontwarn com.unicom.online.account.shield.**
-keep class com.unicom.online.account.shield.** {*;}
-keep class com.sdk.**{*;}
# for CMCC
-dontwarn com.cmic.gen.sdk.**
-keep class com.cmic.gen.sdk.**{*;}
-keep class com.cmic.sso.sdk.**{*;}
# for CUCCXW
-keep class com.unicom.xiaowo.account.shield.**{*;}

另如有用到AndResGuard混淆资源问题,请在whiteList中添加如下混淆配置:

秒验
R.anim.sec_verify_*,
R.drawable.sec_verify_*,
R.layout.sec_verify_*,
R.string.sec_verify_*,
R.color.sec_verify_*,
R.dimen.sec_verify_*,
R.style.sec_verify_*,
R.drawable.customized_toggle_*,
R.drawable.customized_checkbox_selector,
R.drawable.dialog_loading,
移动
R.anim.umcsdk_*,
R.drawable.umcsdk_*,
R.string.umcsdk_*,
R.dimen.umcsdk_*,
电信
R.anim.ct_account_*,
R.drawable.ct_account_*,
R.string.ct_account_*,
R.style.CtAuthDialog,


"R.anim.sec_verify_*",
"R.drawable.sec_verify_*",
"R.layout.sec_verify_*",
"R.string.sec_verify_*",
"R.color.sec_verify_*",
"R.dimen.sec_verify_*",
"R.style.sec_verify_*",
"R.drawable.customized_toggle_*",
"R.drawable.customized_checkbox_selector",
"R.drawable.dialog_loading",
"R.id.sec_verify_*",
"R.id.common_dialog_*",
"R.anim.umcsdk_*",
"R.drawable.umcsdk_*",
"R.string.umcsdk_*",
"R.dimen.umcsdk_*",
"R.anim.ct_account_*",
"R.drawable.ct_account_*",
"R.string.ct_account_*",
"R.style.CtAuthDialog",
"R.id.ct_account_*",
"R.id.ct_auth_*",
"R.string.service_name" ,
"R.style.Dialog_Common",
"R.id.progress_bar" ,
"R.drawable.loading"

隐私授权启动业务

为保证您的App在集成MobSDK之后能够满足工信部相关合规要求,您应确保App安装首次冷启动且取得用户阅读您《隐私政策》授权之后,调用 MobSDK.submitPolicyGrantResult回传隐私协议授权结果。

反之,如果用户不同意您App《隐私政策》授权,则不能调用 MobSDK.submitPolicyGrantResult回传隐私协议授权结果。 请参考秒验SDK隐私政策

  • 通用方案

    /**

    • com.mob.MobSDK.class
    • 回传用户隐私授权结果
    • @param isGranted 用户是否同意隐私协议
      */
      public static void submitPolicyGrantResult(boolean isGranted)
  • 增加App数据采集主动控制器方案

    /**

    • com.mob.MobSDK.class
    • 回传用户隐私授权结果
    • @param isGranted App数据采集主动控制器子类实例
    • @param isGranted 用户是否同意隐私协议
      */
      public static void submitPolicyGrantResult(MobCustomController cont, boolean isGranted);

示例代码

:submitPolicyGrantResult是MobSDK的业务起点。调用位置开发者可以自己指定,只需在使用SDK功能之前调用即可,强烈建议开发者在终端用户点击应用隐私协议弹窗同意按钮后调用。

App数据采集主动控制器用来限制MobSDK采集并提供可选的数据维度和扩展功能。因相关信息的不收集将会对其对应的功能造成影响,请开发者结合业务实际需要进行合理配置。秒验SDK扩展业务功能设置可参考: https://www.mob.com/wiki/detailed?wiki=657\&id=78 ,其它App数据采集主动控制器的配置方法可参考:https://www.mob.com/wiki/detailed?wiki=664\&id=714

MobSDK.submitPolicyGrantResult(new MobCustomController() {
    // TODO 重写控制器
}, true);

// 或者

MobSDK.submitPolicyGrantResult(true);
相关推荐
litGrey12 分钟前
Maven国内镜像(四种)
java·数据库·maven
丶白泽38 分钟前
重修设计模式-结构型-桥接模式
java·设计模式·桥接模式
o独酌o44 分钟前
递归的‘浅’理解
java·开发语言
无问8171 小时前
数据结构-排序(冒泡,选择,插入,希尔,快排,归并,堆排)
java·数据结构·排序算法
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS在线文档管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
Flying_Fish_roe2 小时前
Spring Boot-版本兼容性问题
java·spring boot·后端
程序猿进阶2 小时前
如何在 Visual Studio Code 中反编译具有正确行号的 Java 类?
java·ide·vscode·算法·面试·职场和发展·架构
slandarer2 小时前
MATLAB | R2024b更新了哪些好玩的东西?
java·数据结构·matlab
Dola_Pan2 小时前
Linux文件IO(一)-open使用详解
java·linux·dubbo
摇滚侠2 小时前
spring cxf 常用注解
java·后端·spring