本节介绍如何创建项目,将环信客服云访客端 HarmonyOS SDK 集成到你的项目中,并添加相应的设备权限。
参考以下步骤创建一个 HarmonyOS 项目。
上述步骤使用 DevEco Studio 5.0.0 Release(5.0.3.906) 示例
{
"app": {
"products": [
{
"buildOption": {
"strictMode": {
"useNormalizedOHMUrl": true
}
}
}
]
}
}
{
"name": "entry",
"version": "1.0.0",
"description": "Please describe the basic information.",
"main": "",
"author": "",
"license": "",
"dependencies": {
"VisitorSdk": "file:libs/visitorsdk-v1.0.0.har"
}
}
在模块的 module.json5 ,例如:HelloWorld 中 entry 模块的 module.json5 中,配置示例如下:
{
"module": {
"requestPermissions":[
{
"name" : "ohos.permission.INTERNET",
"reason": "$string:Internet_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when":"always"
}
},
{
"name": "ohos.permission.GET_NETWORK_INFO",
...
},
],
},
}
本节介绍如何实现消息发送:
避免重复初始化,如果进行多次初始化,仅第一次生效
//初始化sdk
let mVisitorOptions = new VisitorOptions();
mVisitorOptions
.setKefuRestServer('${客服系统地址}')//选填,默认为:https://kefu.sh.absoloop.com
.setAppkey('${AppKey}')//必填,坐席管理员模式下-接入-在线客服-App-关联信息-Appkey
.setTenantId('${租户ID}')//必填,坐席管理员模式下-账户-账户信息-租户ID
.setAppVersion('${app版本号}')//选填,建议填写,便于查问题
VisitorClient.getInstance().init(mContext, visitorOptions)
根据业务需求,如需在访客端创建账号,可以使用如下代码注册访客账号:
VisitorClient.getInstance()
.getVisitorManager()
.register(username, password)
.then((value: string)=>{//注册成功})
使用如下代码实现用户登录:
VisitorClient.getInstance()
.getVisitorManager()
.login(username, password)
.then((value: string) => {
//登录成功
})
*除了注册监听器,其他的 SDK 操作均需在登录之后进行。
在发送消息前调用绑定,在退出聊天时调用解绑
//绑定`toChatUsername` 为IM服务号。
VisitorClient.getInstance().getVisitorManager().bindChat(toChatUsername)
//解绑
VisitorClient.getInstance().getVisitorManager().bindChat(toChatUsername)
以发送文本消息为例:
// `content` 为要发送的文本内容,`toChatUsername` 为IM服务号。
let message = Message.createTxtSendMessage(content, toChatUsername);
if(message){
VisitorClient.getInstance().getVisitorManager().sendMessage(message)
}
let messageListener: MessageListener = {
onMessage(msgs: ArrayList<Message>) {
//收到上屏消息
},
onCmdMessage(msgs: ArrayList<Message>) {
//收到cmd消息
},
onMessageStatusUpdate() {
//消息状态改变
},
onMessageSent() {
//消息已发送
}
};
//添加消息监听
VisitorClient.getInstance().getVisitorManager().addMessageListener(messageListener);
//移除消息监听
VisitorClient.getInstance().getVisitorManager().removeMessageListener(messageListener);
VisitorClient.getInstance()
.getVisitorManager()
.logout()
.then(() => {
//退出成功
})
你可以通过注册连接监听确认IM连接状态。
let connectListener: IMConnectListener = {
onConnected: (): void => {
// 长连接建立
},
onDisconnected: (errorCode: number): void => {
// 长连接断开
switch (errorCode) {
case VisitorError.USER_NOT_FOUND:
case VisitorError.USER_LOGIN_ANOTHER_DEVICE:
case VisitorError.USER_AUTHENTICATION_FAILED:
case VisitorError.USER_REMOVED:
VisitorClient.getInstance().getVisitorManager().logout()
//TODO 跳转到登录页面
break;
}
}
}
VisitorClient.getInstance().addConnectionListener(connectListener)
VisitorClient.getInstance().removeConnectionListener(connectListener)
如果由于网络信号弱、切换网络等引起的连接终端,SDK 会自动尝试重连。重连成功或者失败的结果分别会收到通知 onConnected 和 onDisconnected。
你可以通过监听回调 ConnectionListener#onDisconnected 后,调用 #logout 进行退出并返回登录界面。
ConnectionListener#onDisconnected(number) 返回的 errorCode 有如下
//初始化时调用
let mVisitorOptions = new VisitorOptions();
mVisitorOptions.setConsoleLog(false)
VisitorClient.getInstance().init(mContext, visitorOptions)
hdc file recv /data/app/el2/100/base/{应用包名}/{AppKey}/core_log
推送证书参数:
let mVisitorOptions = new VisitorOptions();
mVisitorOptions.setPushAppId('${Harmony Client ID}')
VisitorClient.getInstance().init(context, mVisitorOptions)
let pushListener: VisitorPushListener = {
onError: (error: VisitorError): void => {
console.info(`pushListener onError: ${JSON.stringify(error)}`)
},
onBindTokenSuccess: (token: string): void => {
console.info(`pushListener onSuccess: ${token}`)
}
}
VisitorClient.getInstance().addPushListener(pushListener)