移动应用 SDK for Android
-
在您阅读此文档之前,我们假定您已经具备了基础的 iOS/安卓 应用开发经验,并能够理解相关基础概念.
请您首先把文档全部仔细阅读完毕,并下载我们的官方Demo再进行您的开发, 如还有疑问,请联系您的商务经理
一、导入飞鸽SDK
在Android主项目的build.gradle中添加:
allprojects{
repositories{
maven {
url 'https://maven.aliyun.com/repository/public'
}
maven {
credentials {
username '624eb69681699e5a379197a5'
password 'ZwWQw9x9Jen9'
}
url 'https://packages.aliyun.com/maven/repository/2213371-release-Wb60I6/'
}
maven {
credentials {
username '624eb69681699e5a379197a5'
password 'ZwWQw9x9Jen9'
}
url 'https://packages.aliyun.com/maven/repository/2213371-snapshot-Egzy0j/'
}
}
}
二、在app的build.gradle中添加:
dependencies{
implementation 'com.feige.visitor:visitor:1.0.0'
}
然后编译一下即可
三、集成SDK
如果导入SDK到你的工程没有问题,接下来的几步可以满足一般的需求
-
第一步:初始化, 参数:上下文,站点id,主题
FeiGeConfig helper = new FeiGeConfig();
helper.setConfigCallback()//回调监听
helper.init(上下文, "站点id", "这个是主题");
-
第二步:激活SDK, 参数:域名,端口
//初始化成功之后才能激活
FeiGeImManage.getInstance().login("域名", 端口);
-
第三步:上传设备信息
//激活SDK成功之后,会自动上传城市、ip信息,回调成功之后会执行加入队列、进入房间等方法
FeiGeImManage.getInstance().onLineSendInfo();
-
第四步:跳转到聊天界面(button的点击方法)
//如果使用demo的SessionActivity作为聊天页面
startActivity(new Intent(this,SessionActivity.class));
-
觉得demo的页面太丑,想自定义,采用下面的方法修改配置页面返回按钮
SessionActivity中private void setBackIv(int resId)方法
-
页面背景色
SessionActivity中private void setChatBg(int resId)方法
-
左边气泡颜色
BaseProvider中静态变量leftContentBgId值
-
右边气泡颜色
BaseProvider中静态变量rightContentBgId值
-
头像框形状
BaseProvider中布尔变量isRound值
四、接口介绍
初始化SDK,所有操作都必须在初始化SDK,并且飞鸽服务端返回可用的*****后才能正常执行
开发者在飞鸽客户端添加站点后,可以获取到一个可用的IdMark。在*****的系统回调中调用
FeiGeConfig helper = new FeiGeConfig();
helper.setConfigCallback(new onRequestCallback() {
@Override
public void onRequestSuccess(String result) {
//初始化成功可以执行im登录
}
@Override
public void onRequestError(String error) {
mReconnectionTv.setText("初始化失败");
}
});
helper.init(上下文, "站点id", "这个是主题");
五、如果您不知道IdMark,请使用管理员账号登录飞鸽,在【设置】->【接入设置】->【网站接入】菜单中,点击立即接入查看IdMark
六、发送消息
-
开发者调用此接口来发送文字消息
FeiGeImManage.getInstance().sendTextMessage(“内容”, ToolUtils.getUUID());
-
开发者调用此接口来发送图片消息
FeiGeImManage.getInstance().sendImageMessage(图片, ToolUtils.getUUID());
-
开发者调用此接口来发送文件消息
FeiGeImManage.getInstance().sendFileMessage(文件, ToolUtils.getUUID());
七、获取未读消息
-
用户可以在新消息监听中,自行实现消息未读数
MessageTable
八、从服务器获取历史消息
九、接收即时消息
十、获取当前正在接待的客服信息
-
开发者可以使用此接口来获取正在接待顾客的客服信息。
//加入房间成功后,会回调事件JoinRoomSuccessEvent
JoinRoomSuccessEvent中参数room(房间号) name(客服姓名) agentId(客服id)
十一、设置主题
-
开发者可以在不同的业务场景设置不同的topic,将访客分配到不同的坐席组
//初始化时候需要传入主题
FeiGeConfig helper = new FeiGeConfig();
helper.init(上下文, "站点id", "这个是主题");
topic需要与飞鸽后台设置的主题名称保持一致,并设置相应的高级分配规则
如果您不知道怎么设置主题,请使用管理员账号登录飞鸽,在【设置】->【对话设置】->【主题设置】菜单中,添加主题。
然后在【设置】->【分配规则】菜单中,添加/编辑模板->高级分配规则->添加高级条件设置主题等于*****时,分配给*****技能组。
十二、留言表单
当客服不在线时,访客会直接引导到留言表单进行留言
FeiGeConfig helper = new FeiGeConfig();
helper.setConfigCallback(new onRequestCallback() {
@Override
public void onRequestSuccess(String result) {
ToastUtils.showShort("留言成功");
}
@Override
public void onRequestError(String error) {
ToastUtils.showShort("留言失败");
}
});
helper.setMessage(公司id, 站点id, 姓名, 手机号, 内容);
十三、名词解释
十四、常见问题
-
SDK中可以通过设置日志开关进行调试,设置方法:
FGLogUtils.setDEBUG(true);
-
SDK使用了多个第三方库:
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
api "org.igniterealtime.smack:smack-android-extensions:4.4.0"
api "org.igniterealtime.smack:smack-tcp:4.4.0"
api 'org.greenrobot:eventbus:3.2.0'
implementation 'com.google.code.gson:gson:2.6.2'
-
全局使用EventBus做为回调
//连接状态回调 0连接中 1连接成功 2认证成功 3连接失败 4上线成功 5上线失败 6加入队列成功 7加入队列失败 8加入房间成功 9加入房间失败
ConnectionEvent
-
//加入房间成功
JoinRoomSuccessEvent 中参数room(房间号) name(客服姓名) agentId(客服id)
-
//来新消息
MessageTable
-
//消息已读
MessageHaveReadEvent
-
//进入房间失败或黑名单
DepartQueueEvent
-
//正常结束会话
SessionClosedEvent
-
其他方法
//设置铃声方法,可以去raw文件夹下替换铃声文件
RingUtils.PlayRingTone(this);
-
//设置当前应用是否在后台,只有不是在后台的时候才会发送已读回执
FeiGeImManage.getInstance().setmIsBackground(false);
-
//评价客服 score(1、差评 2、一般 3、好评)
FeiGeConfig helper = new FeiGeConfig();
helper.setConfigCallback(new onRequestCallback() {
@Override
public void onRequestSuccess(String result) {
isEvaluation = true;
ToastUtils.showShort("评价成功");
}
@Override
public void onRequestError(String error) {
ToastUtils.showShort("评价失败");
}
});
helper.setEvaluation(agend, 公司id, 站点id, score);
-
//接收消息MessageTable中参数说明
/**
* 消息id
*/
private String id;
/**
* 房间号
*/
private String roomId;
/**
* 消息类型
* 1 通知
* 2 文本
* 3 图片
* 4 文件
* 5 未知消息 (客户端自己使用的容错类型)
*/
private int msgType;
/**
* 文本内容
* 文本消息时:文本内容
* 图片消息时:图片url
* 文件消息时:文件url
* 通知消息是:提示内容
*/
private String content;
/**
* 发送时间
*/
private String time;
/**
* 客服昵称
*/
private String nickname;
/**
* 客服头像
*/
private String headImg;
/**
* 客服发送的消息(agent)
* 访客发送的消息(visitor)
* 系统消息类型(system)
*/
private String status;
/**
* 发送状态 1发送成功 2发送失败 3发送中
*/
private int sendStatus;
/**
* 是否是自己发送的
*/
private boolean isSend;
/**
* 是否已读
*/
private String unread;
/**
* 文件名字
*/
private String fileName;
/**
* 文件大小
*/
private String fileSize;
/**
* 文件后缀
*/
private String fileType;