Android接入
接入步骤
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文件中添加下列权限配置:
注:若以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
参数名类型是否必须作用
contextContext是用于获取设备基本信息
productNumberString是产品编号
callbackRequestCallback否结果描述
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
参数名类型是否必须作用
businessIdString是业务id
timeoutint否最长超时时间,单位秒。若没指定,则默认3s;timeout可设置范围为1~10秒
callbackRequestCallback否结果描述
接入示例
在项目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 params = new HashMap();
// 携带注册保护查询token
params.put("token", token);
params.put("username", username);
params.put("password", password);
// 点赞操作需要注册保护护检查
String riseResp = HttpClient4Utils.sendPost(httpClient, RISE_URL, params, Consts.UTF_8);
// 处理点赞的响应
}