Android接入

2020.06.08 14:34:08

    接入步骤

    Android SDK接入分为如下步骤:

    • 嵌入SDK
    • init:初始化SDK
    • getToken:调用getToken接口获取token,每次调用返回不同的token值。一般由用户操作(提交等)来触发getToken,请注意:一个token只能使用一次,如果在同一个页面中,允许用户多次操作,请多次调用getToken接口以获取不同的token;
    • 提交token:将token作为请求参数提交到业务方后端。

    嵌入SDK

    嵌入SDK有如下步骤:

    • 导入SDK
    • 导入需要的ABI
    • 添加权限信息
    • 添加ProGuard配置
    • 导入watchman

    导入SDK

    SDK以aar形式发布,可使用在线方式导入,在build.gradle配置文件中添加如下配置(x.x.x表示版本号,请联系您的专属安全策略经理确认最新的版本号):

    dependencies {
      compile 'com.netease.mobsec:netmobsecLib:x.x.x@aar'
    }
    

    导入需要的ABI

    SDK提供了armeabi、armeabi-v7a、x86、x86_64、arm64-v8a五种ABI的支持,默认会导出这五种ABI。注意:

    • 如果产品本身不支持这么多ABI,就需要对最终导出的ABI进行过滤,不然会CRASH
    • 如果app只需要支持特定的ABI,比如armeabi,armeabi-v7a,x86三种,可以在build.gradle添加如下配置:
    defaultConfig {
        applicationId "com.XX.XXX"
        minSdkVersion XX
        targetSdkVersion XX
        versionCode XX
        versionName "X.X.X"
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
    }
    

    添加权限信息

    SDK需要在AndroidMenifest.xml文件中添加下列权限配置:

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    

    注:若以aar形式接入,可不用在应用AndroidMenifest.xml中申明权限。

    添加ProGuard配置

    若使用ProGuard进行混淆,需要将SDK使用的类排除掉。若使用Android studio开发,则在proguard-rules.pro文件里添加如下信息:

    -keep class com.netease.mobsec.**{*;}
    

    导入类

    在需要调用sdk接口的文件中,导入watchman:

    import com.netease.mobsec.rjsb.watchman;
    

    init接口(新增回调参数)

    在项目Application类或者Activity类的onCreate或onStart()方法中调用init方法来初始化SDK,接口说明如下:

    • 开始支持的版本:4.3.0
    • 调用方式:watchman.init(context, productNumber, callback)
    • 接口描述:初始化SDK,采集数据并将数据提交到登录保护后台
    • 回调说明: onResult( int code, String msg)
      • code: 返回码,200代表初始化成功,其他为失败,详见错误码描述
      • msg:结果描述
    • 返回值:void
    参数名 类型 是否必须 作用
    context Context 用于获取设备基本信息
    productNumber String 产品编号
    callback RequestCallback 结果描述

    getToken接口(新增回调参数)

    getToken接口返回唯一凭证token,业务方客户端需要将此token提交到业务后端,业务后端再使用此token来check接口获取检测结果。

    • 开始支持的版本:4.3.0
    • 调用方式:watchman.getToken(businessId, callback) 或 watchman.getToken(businessId, timeout, callback)
    • 接口描述:获取唯一凭证token,此接口是同步接口
    • 回调说明: onResult( int code, String msg)
      • code: 返回码,200代表初始化成功,其他为失败,详见错误码描述
      • msg:结果描述
    • 返回值:String
    参数名 类型 是否必须 作用
    businessId String 业务id
    timeout int 最长超时时间,单位秒。若没指定,则默认3s;timeout可设置范围为1~10秒
    callback RequestCallback 结果描述

    接入示例

    在项目Application类或者主Activity类的onCreate()方法中初始化SDK。

    import com.netease.mobsec.rjsb.watchman;
    
    public class MyApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            //初始化SDK
            watchman.init(mContext, "your productNumber",new RequestCallback(){
                @Override
                public void onResult(int code, String msg) {
                    Log.e(TAG,"init OnResult , code = " + code + " msg = " + msg);
                }
            });
            // 业务代码   
        }
    }
    

    在需要注册保护的接口中,先获取注册保护Token,然后做其他相应的操作,比如:

    public void rise() {
         // 获取注册保护查询token,使用默认延时3秒
        String token = watchman.getToken( "your BusinessId",new RequestCallback(){
            @Override
            public void onResult(int code, String msg) {
                Log.e(TAG,"Register OnResult, code = " + code + " msg = " + msg);
            }
        });
        Map<String, String> params = new HashMap<String, String>();
        // 携带注册保护查询token
        params.put("token", token);
        params.put("username", username);
        params.put("password", password);
        // 点赞操作需要注册保护护检查
        String riseResp = HttpClient4Utils.sendPost(httpClient, RISE_URL, params, Consts.UTF_8);
        // 处理点赞的响应
    }
    
    在线咨询 电话咨询:95163223 免费试用