Android SDK 接入指南
最近更新:2020年7月1日
集成
添加网络权限,在 AndroidNanifest.xml 中添加
<uses-permission android:name="android.permission.INTERNET" />
使用 java1.8 编译,在 app 的 gradle 文件中,android 标签下添加
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
添加依赖包
implementation files("./ada-core-119-release.aar")
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72"
implementation "com.squareup.retrofit2:retrofit:2.8.1"
implementation "com.squareup.okhttp3:okhttp:4.5.0"
SDK 包大小为 135KB
初始化
在使用 SDK 之前必须先初始化
AdaInitializer.init(application, appId, appSecret)
登录认证
val httpClient = AdaInitializer.register(mobile, securityCode)
如果登录认证失败,httpClient 为 null
会话
发起会话
httpClient.dashboardDialog()
跳过档案选择,直接给某人问诊
httpClient.profileSelectDialog(profileKey)
跳过症状选择
httpClient.symptomSearchDialog(profileKey, findingKey)
回复会话,获取下一条会话
httpClient.dialog(qid, aid, input)
qid 为问题 id
aid 为回答 id
input 代表用户输入的信息
会话数据结构
参数名 | 参数描述 | 类型 | 是否必有 |
---|---|---|---|
qid | 问题id | String | 是 |
type | 问题类型 | Int | 是 |
question | 问题描述 | String | 否 |
answers | 问题选项 | ArrayAnswer | 是 |
Answer 类型
参数名 | 参数描述 | 类型 | 是否必有 |
---|---|---|---|
aid | 回答id | String | 是 |
type | 回答类型 | Int | 是 |
label | 回答的文案 | String | 否 |
问题 type
type | 描述 | 处理方式 |
---|---|---|
0 | 会话 | 回复问题,获取下一个会话 |
1 | 重新开始评估 | 重新开始评估 |
回答 type
type | 描述 | 处理方式 |
---|---|---|
1 | 单选 | 展示一个按钮,文案为 label<br />点击后调用会话方法,传入 aid 字段 |
2 | 昵称 | 展示一个文本框,提示内容为 label<br />可输入的最大长度为 maxLength<br />inputRequired 字段表示是否必填<br />提交后调用会话方法,传入 aid、input 字段 |
3 | 弹框 | 展示一个按钮,文案为 label<br />点击后弹出对话框,展示 modalTitle、modalText<br />如果有图片,图片信息在 mediaImages 数组里 |
4 | 日期选择 | 年月日选择,提交按钮展示 label<br />最小日期为 minimumDate<br />最大日期为 maximumDate<br />inputRequired 字段表示是否必填<br />提交后调用会话方法,传入 aid、input 字段<br />日期格式为 yyyy/MM/dd |
5 | 症状选择 | 展示症状搜索框<br />选择症状后调用会话方法,传入 aid、input 字段<br />input 为症状 id<br />提供了 profileKey 字段,用于获取档案性别、生日信息,实现精准搜索病症 |
6 | 打开报告按钮 | 展示一个按钮,文案为 label<br />提供 adaCaseKey 字段,用于获取报告<br />点击后打开报告,返回后调用会话方法,传入 aid |
7 | 意见反馈 | 展示一个文本输入区域<br />inputRequired 字段表示是否必填<br />提交后调用 dialog 接口,传入 aid、input 字段 |
8 | 症状追踪等级滑块 | 展示一个滑块,可选范围为 1~10 的整数<br />提交后调用会话方法,传入 aid、input 字段 |
9 | 腹部区域选择 | 展示一个人体腹部图,圈出腹部七个区域:<br />above -> 在胃上方的区域<br />center -> 在肚挤附近<br />lowerLeft -> 左下方<br /> lowerRight -> 右下方<br />pelvic -> 在盆骨<br />upperLeft -> 左上方<br />upperRight -> 右上方<br />选择一个区域,点击确定后,调用会话方法,传递 aid、input 字段 |
MediaImage 类型
参数名 | 参数描述 | 类型 | 是否必有 |
---|---|---|---|
mediaUrlId | 图片 Base64 格式文件下载地址 | String | 是 |
title | 图片描述 | String | 是 |
urlSmall | 600px小图 | String | 是 |
urlMedium | 1100px中图 | String | 是 |
urlLarge | 1600px大图 | String | 是 |
copyrightInfo | 版权信息 | String | 是 |
会话回退
- 用于让服务器记录问诊状态,方便用户继续问诊
- 让服务器正确的判断用户的症状
- 每次只能回退一步
- 如果不能回退,返回相应错误码,提示用户
调用方式:
httpClient.undo()
获取报告列表
httpClient.reportList()
获取报告详情
httpClient.report(adaCaseKey)
症状搜索
httpClient.searchSymptoms(query, sex, birthday)
异常码
错误码 | 含义 | 描述 |
---|---|---|
400 | 证书异常 | SSLHandshakeException |
401 | 证书异常 | SSLPeerUnverifiedException |
402 | 请求超时 | SocketTimeoutException |
403 | 请求超时 | SocketException |
404 | 请求超时 | InterruptedIOException |
501 | 不能回退 | 调用会话回退方法时,如果不能回退,返回此错误码 |
502 | 输入长度错误 | 输入的 input 长度超过 maxLength 规定的字数限制 |
503 | 输入为空 | inputRequired 为 true 时,input 为 null 或者为空白字符,返回此错误码 |
504 | 输入腹部区域值错误 | 不能识别的腹部标示 |
505 | 日期解析异常 | 日期格式应为 yyyy/MM/dd |
506 | 日期范围异常 | 日期不在 minimumDate ~ maximumDate 之间 |
507 | 病症 key 异常 | findingKey 异常,需要先搜索病症,再取病症相应的 key |
508 | 病症追踪输入异常 | 病症追踪 input 输入异常,输入的值应为 1~10 的整数 |
509 | 非法的 qid | qid 应为当前问题的 id |
510 | 找不到 qid | 根据 qid,找不到相应的 question |
511 | 找不到 aid | 根据 aid,找不到 question 对应的 answer |
512 | 操作频繁 | 必须等待会话接口返回结果后再请求下一个会话接口 |