# 应用客户端接入
# 应用需提供参数以及获取方式
接入参数
| 提供方 | 参数名称 | 说明 | 获取方式 | 备注 |
|---|---|---|---|---|
| 应用名称 | 应用的名字和功能描述 | |||
| 应用 | 包名 | 检测包名是否和安卓系统内相符 | APP开发工具可查 | (必须提供) |
| 应用 | SHA1值 | APP发布应用所使用签名文件的SHA1值,用来校验应用接入是否合法 | windows环境下CMD命令keytool -list -v -keystore 签名文件 或者 keytool -list -printcert -jarfile app名.apk 即可获取 | (必须提供签名文件的sha1值)可以将本机开发debug版本的sha1值一起提供方便开发测试 |
| 应用 | MD5值 | 应用APP发布应用所使用签名文件的MD5值,用来校验应用接入是否合法 | windows环境下CMD命令keytool -list -v -keystore 签名文件或者 keytool -list -printcert -jarfile app名.apk 即可获取。 | (必须提供签名文件的MD5值)可以将本机开发debug版本的MD5值一起提供方便开发测试 |
| 应用 | 应用平台出口IP地址 | 平台接口限制应用只能从应用平台IP调用此接口。 | 应用平台网络维护人员 | 调用CISS提供的接口需要 |
| CISS平台 | CISSAppId | 传给应用APPid,用来和ciss交互 | 提供第三第四列参数后申请通过即返回 | 重要参数不可泄漏 |
| CISS平台 | CISSAppKey | 传给应用APPKey,用来和ciss交互以及加密通讯使用 | 提供第三第四列参数后申请通过即返回 | 重要参数不可泄漏 |
# 相关文件及参数
# 开发环境
编译器版本:AndroidStudio 3.1.4以上
Gradle 版本:4.4
# 所需权限
| > | 动态申请 |
|---|---|
| 文件存储 | READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE |
| 读取手机信息 | READ_PHONE_STATE |
| 弹窗权限 | SYSTEM_ALERT_WINDOW |
| 蓝牙权限 | BLUETOOTH 和 BLUETOOTH_ADMIN |
| 位置权限 | ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION |
# 添加库文件
将 libciss-skfJava-national-release.aar (不同版本aar文件名会有不同) 文件,添加到app module的libs文件夹中,
# 项目配置
由于项目中使用了
- 在 app module 的 build.gradle 文件添加如下配置
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
//不同版本aar文件名会有不同
implementation(name:'libciss-skfJava-national-release', ext:'aar')
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'org.bouncycastle:bcprov-jdk15on:1.62'
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 在 AndroidManifest.xml 文件的
<application>节点添加如下配置:
<uses-library android:name="org.simalliance.openmobileapi" android:required="false" />
1
注:和
<activity></activity>同级。
# 混淆配置:
-keep class com.asiainfo.sec.libciss.** { *; }
-keep class cissskfjava.** { *; }
1
2
2
# 添加启动app时的初始化操作:
private static Context context;
private static final String CISSAppId = "*************";
private static final String CISSAppKey = "***************";
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
try {
CISS.init(this, CISSAppId, CISSAppKey);//初始化
CISSConfig.getInstance().setRandomPin(true);//输入pin时使用随机键盘
} catch (Exception e) {
Log.e("MyApp", "CISS初始化失败:" + e.getMessage(), e);
}
}
public static Context getContext() {
return context;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19