Android 接入udesk SDK实现IM
时间:2022-07-25
本文章向大家介绍Android 接入udesk SDK实现IM,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
步骤
1.账号注册
略
2.创建应用获得APP Id和App Key
创建好之后可以获得应用的APP Id和App Key,这两个值是要在Android中配置的
3.下载SDK
点击Android SDK使用教程,进入接口文档的页面
点击GitHub的地址进入
点击androidX 版本地址
下载好之后解压到本地,然后找到UdeskSDKUI,这是这个SDK文件中的一个核心模块,下面还有一个视频的udeskvideo模块,用不到它。
4.创建项目,导入UdeskSDKUI模块并配置
由于我是写一个Demo,所以我的命名是UdeskDemo,项目中的是AndroidX,gradle是5.4.1。项目创建完成之后,复制这个文件夹到你的工程的根目录下
接下来配置这个模块
①配置build.gradle
打开app的build.gradle
repositories {
flatDir {
dirs project(':UdeskSDKUI').file('libs')
}
}
implementation project(':UdeskSDKUI')
②配置settings.gradle
打开工程根目录下的settings.gradle文件 在app后面加上,’:UdeskSDKUI’
然后Sync同步一下,这里需要等待一段时间,因为模块中也是有很多依赖库文件需要下载同步配置,同步完成之后,你的模块就会是这样
接下来来配置AndroidManifest.xml文件
<!-- Required 一些系统要求的权限,如访问网络等-->
<uses-permission android:name="${applicationId}.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
这时安装一下,确定你之前的步骤没有问题,然后再在MainActivity中进行模块代码的配置
5.配置代码并使用
package com.llw.udeskdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import cn.udesk.PreferenceHelper;
import cn.udesk.UdeskSDKManager;
import cn.udesk.config.UdeskConfig;
import udesk.core.UdeskConst;
public class MainActivity extends AppCompatActivity {
private TextView tv_online_service;
//替换成你们注册生成的域名
private String UDESK_DOMAIN = "1593286.s3.udesk.cn";
//替换成你们生成应用产生的appid
private String AppId = "9d3a79847ba2c088";
// 替换成你们在后台生成的密钥
private String UDESK_SECRETKEY = "6b9ebea7645ad58a21919ac1e98eb745";
String sdkToken = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_online_service = (TextView)findViewById(R.id.tv_online_service);
//传入注册的域名和密钥
readAndWriteDomainAndKey();
//获得Token
if (TextUtils.isEmpty(sdkToken)) {
sdkToken = UUID.randomUUID().toString();
}
//使用前需要设置的信息:
UdeskSDKManager.getInstance().initApiKey(getApplicationContext(), UDESK_DOMAIN,
UDESK_SECRETKEY, AppId);
tv_online_service.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Map<String, String> info = new HashMap<String, String>();
//sdktoken 必填**
info.put(UdeskConst.UdeskUserInfo.USER_SDK_TOKEN, sdkToken);
info.put(UdeskConst.UdeskUserInfo.NICK_NAME,"麻花藤");
info.put(UdeskConst.UdeskUserInfo.CELLPHONE,"15651818750");
//只设置用户基本信息的配置
UdeskConfig.Builder builder = new UdeskConfig.Builder();
builder.setDefualtUserInfo(info);
//咨询会话
UdeskSDKManager.getInstance().entryChat(getApplicationContext(), builder.build(), sdkToken);
}
});
}
private void readAndWriteDomainAndKey() {
sdkToken = PreferenceHelper.readString(getApplicationContext(), "init_base_name", "sdktoken");
PreferenceHelper.write(getApplicationContext(), "init_base_name", "sdktoken", sdkToken);
PreferenceHelper.write(getApplicationContext(), "init_base_name", "domain", UDESK_DOMAIN);
PreferenceHelper.write(getApplicationContext(), "init_base_name", "appkey", AppId);
PreferenceHelper.write(getApplicationContext(), "init_base_name", "appid", UDESK_SECRETKEY);
}
}
- 使用句柄实现特定场景的无备份恢复 (r3笔记第61天)
- 关于dual表的破坏性测试(r3笔记第60天)
- 哈希现金(Hashcash)与“工作量证明”
- 关于oracle中的sql数据类型(r3笔记第59天)
- 使用awr来分析sesson leak问题(r3笔记第78天)
- 弹窗层效果的实现(非jQuery实现)
- 简单的导航栏实现
- js实现css3的过渡,需要注意的一点(浏览器优化)
- 居中详解
- 通过pl/sql计算程序的运行时间(r3笔记第77天)
- 操作系统存储管理和oracle数据库(第一篇) (r3笔记第76天)
- 关于虚拟索引的学习(r3笔记第75天)
- python数据挖掘:能不能找出吃货最佳住宿点?
- 解决ajax跨域请求 (总结)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 解决nginx/apache静态资源跨域访问问题详解
- 可怕的万圣节 Linux 命令
- linux环境不使用hadoop安装单机版spark的方法
- 在linux下玩转带有超时时间的connect函数
- Linux/CentOS服务器安全配置通用指南
- 详解centos7中配置keepalived日志为别的路径
- jointplot快速探究两组变量的分布及关系
- linux中alarm函数的实例讲解
- 如何给Linux虚拟机连上WiFi详解
- Linux系统查看CPU、机器型号、内存等信息
- 实战基本的Linux sed命令示例代码
- 在Linux中如何查看可用的网络接口详解
- Linux程序运行时加载动态库失败的解决方法
- Linux/CentOS系统同步网络时间的2种方法详解
- Linux 常用命令之Linux more命令使用方法