Android 客服工作台 SDK

开发工具

目录

build.gradle 配置

添加依赖,在app的build.gradle 中dependencies中加入如下(添加后需同步gradle):

android{

......

defaultConfig {

ndk {

//选择要添加的对应cpu类型的.so库

abiFilters 'armeabi', 'arm64-v8a'

//还可以添加 'armeabi-v7a', 'x86'

}

}

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

//环信坐席端SDK

compile 'com.easemob:kefu-agentsdk-android:1.0.5'

compile 'com.squareup.okhttp3:okhttp:3.+'

compile 'com.google.code.gson:gson:2.+'

}

注意 如果在添加以上abiFilter配置后AndroidStudio有如下提示:

NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.

则需要在Project根目录的gradle.properties文件中添加:

android.useDeprecatedNdk=true

初始化

初始化需要在Application中调用,HDClient的其他方法也都需要在他后面调用 例如:DebugMode、网络通知,消息通知等

HDClient.getInstance().init(this);

设置调试模式

// 设置为true后,将打印日志到logcat, 发布APP时应关闭该选项

HDClient.getInstance().setDebugMode(true);;

登录

//uName 登录账号 uPwd 登录密码 isHiddenLogin[true|false] 在线登录|隐身登录

HDClient.getInstance().login(uName, uPwd, isHiddenLogin, new HDDataCallBack() {});

添加移除事件监听

//事件监听,由新消息,新会话,会话关闭,账号被删除等事件组成

HDClient.getInstance().chatManager().addEventListener(eventListener);

HDClient.getInstance().chatManager().removeEventListener(eventListener);

判断是否已经登录

//APP只需要登录一次,SDK会协助自动登录,因此在进入APP时需要判断是否登录过

if(HDClient.getInstance().isLoggedInBefore()){

//已经登录,可以直接进入主界面

}else{

//未登录,需要登录后,再进入主界面

}

退出方法

登出后应退出客服系统或跳转到登录界面

HDClient.getInstance().logout(new HDDataCallBack() {});

添加网络监听,可以显示当前是否连接服务器

connectionListener = new HDConnectionListener() {

@Override

public void onConnected() {

runOnUiThread(new Runnable() {

@Override

public void run() {

// 正常连接到服务器

}

});

}

@Override

public void onAuthenticationFailed(int errorCode) {

runOnUiThread(new Runnable() {

@Override

public void run() {

// 认证失败,可能为账号被删除,可能为服务器强制下线,可能为在其他地方登录,总之,需要退到登录界面即可,此处无需再调用退出方法,直接跳转登录界面即可。

}

});

}

@Override

public void onDisconnected() {

runOnUiThread(new Runnable() {

@Override

public void run() {

//连接不到服务器,可能为网络不可用,可能为服务器有问题

}

});

}

};

HDClient.getInstance().addConnectionListener(connectionListener);

//如果添加到某个Activity,需要在Activity的onDestory方法调用移除监听

if (connectionListener != null){

HDClient.getInstance().removeConnectionListener(connectionListener);

}

添加小米推送

AndroidManifest.xml配置

添加MiPush.jar到项目的libs文件夹中

AndroidManifest.xml配置

...

android:name="你的包名.permission.MIPUSH_RECEIVE"

android:protectionLevel="signature" />

...

android:name="com.xiaomi.mipush.sdk.PushMessageHandler"

android:enabled="true"

android:exported="true" />

android:name="com.xiaomi.mipush.sdk.MessageHandleService"

android:enabled="true" />

android:name="com.hyphenate.chat.EMMipushReceiver"

android:exported="true" >

...

添加华为推送

华为HMS推送集成

按照下面的说明重新集成 HMS 推送服务;

PS:集成时需要删除之前的华为jar包和推送代码,并下载新版HMS SDK引用到自己的项目中,其中Base和Push两个库是必须的,其他的可以参考华为官方介绍自己决定是否添加

创建华为应用

首先就是去华为开发者后台创建应用,并开启 push 服务,并上传对应的证书指纹,具体可以看下华为官方介绍:华为HMS消息推送服务集成

上传推送证书

注册完整后,需要在环信开发者后台上传推送证书,选择你的应用—>推送证书—>Huawei—>新增证书,然后输入你在华为开发者后台创建的应用的APPID和APP SECRET;

客户端配置 HMS

然后SDK 这里对 HMS 注册华为推送 token 进行了封装,集成时还是比较简单的,只需要在 AndroidManifest.xml 配置文件配置相关广播接收器和服务等:

记得设置自己的在华为开发者后台创建的应用的APP ID

PS:在自己实现广播接收器的时候必须继承自环信封装的那个广播接收器com.hyphenate.chat.EMHWPushReceiver,否则收不到环信的离线推送

android:name="com.huawei.hms.client.appid"

android:value="华为应用 APP ID" />

配置完这些之后,在满足条件的华为设备上就可以使用华为推送接收离线推送通知了;

故障排查

当开发者做完这些之后如果在华为设备上还是收不到推送,可以看下控制台的输出,或者环信 sdcard 上保存的日志,是否有一下日志输出:

// 当设备的华为移动服务版本比较低的时候,无法启用华为推送,会有以下输出

D/ONE SDK: [EMPushHelper] huawei mobile services is not available. please upgrade

// 当注册 token 时,华为开发者后台证书不对应,或者没有开通 Push 服务,当所有的都确认没问题后,如果还是有这样的问题,这个需要联系华为技术支持查看下是否生效

D/ONE SDK: hms service connection suspended. error: 6xxx 或 9xxxxxxxx

后边的 error 为华为官方错误码,更多错误码请参考华为官方错误表:表3-1 HMS 通用错误码及处理方式

混淆文件

混淆添加到proguard-rules.pro中

#环信客服

-keep class com.hyphenate.** {*;}

-dontwarn com.hyphenate.**

#gson

-keep class sun.misc.Unsafe { *; }

-keep class com.google.gson.stream.* { *; }

-keep class com.google.gson.examples.android.model.* { *; }

-keep class com.google.gson.* { *;}

#nineoldandroids

-dontwarn com.nineoldandroids.*

-keep class com.nineoldandroids.** { *;}

#butterknife

-keep class butterknife.** { *; }

-dontwarn butterknife.internal.**

-keep class **$$ViewBinder { *; }

-keepclasseswithmembernames class * {

@butterknife.* ;

}

-keepclasseswithmembernames class * {

@butterknife.* ;

}

#okhttp

-dontwarn com.squareup.okhttp.**

-keep class com.squareup.okhttp.** { *;}

-dontwarn okio.**

-keep interface com.squareup.okhttp.** { *; }

-dontwarn com.squareup.okhttp.**

#okhttp3

-dontwarn com.squareup.okhttp3.**

-keep class com.squareup.okhttp3.** { *;}

-dontwarn okio.**

#glide

-keep public class * implements com.bumptech.glide.module.GlideModule

-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {

**[] $VALUES;

public *;

}

#如添加华为push

# Huawei push

-keep class com.huawei.android.pushagent.** {*;}

-keep class com.huawei.android.pushselfshow.** {*;}

-keep class com.huawei.android.microkernel.** {*;}

-keep class com.baidu.mapapi.** {*;}

-keep class com.hianalytics.android.** {*;}

-dontwarn com.huawei.android.pushagent.**

-dontwarn com.huawei.android.pushselfshow.**

-dontwarn com.huawei.android.microkernel.**

-dontwarn com.github.mikephil.charting.data.**

#如添加小米push

#mipush

-keep class com.xiaomi.push.** {*;}

-dontwarn com.xiaomi.push.**

-keepclasseswithmembernames class com.xiaomi.**{*;}

-keep public class * extends com.xiaomi.mipush.sdk.PushMessageReceiver

更多功能

android客服功能介绍,Android 客服工作台 SDK相关推荐

  1. android中拍照功能介绍,Android实现拍照功能

    大家好,这是一个简单的拍照功能,很简单的界面,一个显示图像区域SurfaceView一个"拍照"按钮.直接上代码! 1.CameraDemoActivity.java(主界面) p ...

  2. Android Studio多功能闹钟[android源码]

    Android Studio多功能闹钟[android源码] 多功能闹钟App 简 介 主 要 技 术 界面截图 主要代码 源码链接 作者信息 多功能闹钟App 简 介 此多功能闹钟界面采用TabHo ...

  3. 在线客服功能介绍-了解常见在线客服系统的功能点

    在线客服,通常我们说这个基本都是指IM客服(区分于电话客服等)."客服"表示了系统的使用人群或系统功能,"在线"说明了交互方式.我们在日常生活中多多少少都有用到 ...

  4. uni-app小程序使用客服功能和获取客服聊天记录demo

    demo代码如下: <template>     <view class="content">         <button open-type=& ...

  5. android 最新功能介绍,Android Studio 常用功能介绍

    界面介绍 讲解1 这个界面,显示了我们使用 Android Studio时经常接触到的功能面板. Project 面板. 用于浏览项目文件. Project 面板会显示当前的所有的 module .  ...

  6. 如何调用android录屏功能吗,Android录屏功能的实现

    最近做一个Android开发的项目用到了录屏的功能,开始查阅了一些资料和博客,基本上都是在讨论ROOT的.直到后来在github上看到一个比较新的代码,才恍然发现,Android 5.0时候开放了一个 ...

  7. android短信功能裁剪,Android短信发送功能实现技巧分享

    如现在启动一模拟器id 号为5554,运行cmd telnet localhost 5554 输入help 可以看到很多用于模拟器中的功能命令 gsm call 134343434   // 便是呼叫 ...

  8. android 收藏歌曲功能,基于android的网络音乐播放器-回调实现音乐播放及音乐收藏的实现(三)...

    作为android初学者,最近把疯狂android讲义和疯狂Java讲义看了一遍,看到书中介绍的知识点非常多,很难全部记住,为了更好的掌握基础知识点,我将开发一个网络音乐播放器-EasyMusic来巩 ...

  9. android清理缓存功能吗,Android清理缓存功能实现

    我们都知道在Android的设置->应用程序中可以查看应用程序的相关信息,其中有一个功能是清除缓存.如图: 怎么实现这些功能呢,从Android的setting源码中可以得到相关信息. 实现如下 ...

最新文章

  1. keras bi-lstm_LSTM用于文本生成的应用介绍-使用Keras和启用GPU的Kaggle Kernels
  2. linux后台任务部署平台Tac
  3. python解决组合问题
  4. ASP.NET的错误处理机制之二(实例log4net)
  5. map可以用结构体作为健值吗?
  6. listview刷新,延迟加载,用单行刷新取代notifyDataSetChanged
  7. vs2012编译boost_1_54_0
  8. HTTP协议支持的方法
  9. VS2008(C#)子页嵌套母版页的控件访问方法(二)
  10. 直播预告丨原厂专家解析MySQL的性能管理
  11. 5 html 根据手机转动而转动_最全的全景照片拍摄方法合集,手机也能拍哦
  12. 抽象方法实现多态___森林里的动物在快乐的生活
  13. suse11 mysql 5.7_SUSE Linux系统中单实例二进制方式安装MySQL 5.7.22
  14. 【浅墨著作】《OpenCV3编程入门》内容简介勘误配套源代码下载
  15. HW2021攻防演练经历碎碎念-见解
  16. 笔记·Pandas几类数据读写方法对比——csv,parquet,feather和pickle
  17. brconfig bridge0 add emac0 add vp0 up
  18. img标签插入图片的方法
  19. 用C语言解“计算工资”题
  20. 微机原理与接口技术的基础知识

热门文章

  1. 这才是正确清理手机内存的方法,一起来看看
  2. 15_webpack_resolve模块解析
  3. 将网页都变成灰色的方法
  4. 如何有更好的职业发展
  5. 事务 | Spring Cloud 分布式事务管理(二)2pc/3pc
  6. 支付宝收款软件常见问题处理
  7. Unity零基础到入门 ☀️| Unity从青铜 到 王者!只差这篇让你学会Unity中最重要的部分——脚本组件✨
  8. 什么是 Web App?Hybrid App?Native App?
  9. mac上怎么卸载office应用程序
  10. vbs 语音说话(表白必备)