1.网络请求安全性
目的
确保接口都是合法的被访问,而不是外部人员通过接口测试工具(例如postman)进行访问。
和后台开发人员沟通好签名规则后,Android 未登录无token 的情况下后端开发人员按约定好的加密方式进行验签,若已登录有token的情况下,安卓端请求头带token,后端验证token的合法性
签名的写法(举个例子)
- 把所有参数加一个时间戳参数,对所有参数首字母排序并生成字符串。
- 时间戳整除17取余数
- 然后整个字符串从余数位置进行截取,首尾互换,未满余数的不截取字符串,
- 再进行MD5加密
实例代码
public static String getSignature(JSONObject initParam,long time) throws JSONException {
List<String> list = new ArrayList<>();
Iterator iterable=initParam.keys();
while (iterable.hasNext()){
list.add((String) iterable.next());
}
Collections.sort(list);
StringBuffer sb=new StringBuffer();
for (String s:list){
sb.append(initParam.getString(s));
}
String rawString=sb.toString();
int l= (int)(time%17);
if(rawString.length()>l){
rawString=rawString.substring(l,rawString.length())+rawString.substring(0,l);
}
return Utils.toMD5(rawString);
}
2.APP 免密登录,提高用户体验度。
背景
用户登录系统后一直在操作,当到token到期后,突然该用户被提示需要重新登录,这样的体验是非常不好的。
开发前期准备:后台开发人员提供一个刷新token的接口
App端开发思路
- 用户第一次登录填写账号密码后,调用登录接口获取用户信息、accessToken、refreshToken,
- 当后台返回的信息错误码为accessToken失效时,使用refreshToken,访问刷新token的接口获取最新accessToken
3.手机上获取Log,摆脱电脑限制,从而快速准确定位到bug
背景
常规情况调试app,都是手机连接电脑,根据Android studio logcat 查看log。
但由于app各个场景的复杂性(例如用户那边出现bug,公司测试人员无法复现、bug出现在智慧工厂生产环境中,开发人员不在现场等场景),出现bug时无法连接电脑,便看不到log了,
开发思路
通过在app代码中加入执行带有log输出的cmd命令的代码,获取到log输出的字符串,写入sd卡完成log实时记录。
实例代码
try {
cmds = "logcat";//打印所有日志信息
logcatProc = Runtime.getRuntime().exec(cmds);
mReader = new BufferedReader(new InputStreamReader(
logcatProc.getInputStream()), 1024);
String line = null;
while (mRunning && (line = mReader.readLine()) != null) {
if (!mRunning) {
break;
}
if (line.length() == 0) {
continue;
}
if (out != null && line.contains(mPID)) {
out.write((line + "\n").getBytes());
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (logcatProc != null) {
logcatProc.destroy();
logcatProc = null;
}
if (mReader != null) {
try {
mReader.close();
mReader = null;
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
out = null;
}
}
}