上云无忧 > 文档中心 > 环信IM即时通讯使用教程(Unity) - SDK 快速开始
IM即时通讯
环信IM即时通讯使用教程(Unity) - SDK 快速开始

文档简介:
本文介绍如何快速集成环信即时通讯 IM Unity SDK 实现发送和接收单聊文本消息。 技术原理: 下图展示在客户端发送和接收单聊文本消息的工作流程。
*此产品及展示信息均由环信官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

本文介绍如何快速集成环信即时通讯 IM Unity SDK 实现发送和接收单聊文本消息。

技术原理

下图展示在客户端发送和接收单聊文本消息的工作流程。

如上图所示,发送和接收单聊消息的步骤如下:

  1. 客户端向你的应用服务器请求 Token,你的应用服务器返回 Token。
  2. 客户端 A 和客户端 B 使用获得的 Token 登录环信即时通讯系统。
  3. 客户端 A 发送消息到环信即时通讯服务器。
  4. 环信即时通讯服务器将消息发送到客户端 B,客户端 B 接收消息。

前提条件

开始前,请确保你的开发环境满足以下条件:

  • Unity Editor 2019.4.28 或以上版本
  • Unity SDK 1.0.5 或以上
  • 目前 Unity SDK 仅支持 x86 指令集及 Intel 芯片。
  • 操作系统与编译器要求:
开发平台 操作系统版本 编译器版本
Android Android 5.0 或以上 Android Studio 3.0 或以上
iOS iOS 10 或以上 Xcode 建议最新版本
macOS macOS 10.0 或以上 Xcode 9.0 或以上,Visual Studio for Mac 2019 或以上
Windows Windows 10 或以上 Microsoft Visual Studio 2019 或以上
  • 有效的环信即时通讯 IM 开发者账号和 App Key,见 环信即时通讯云管理后台 (opens new window)
  • 如果你的网络环境部署了防火墙,请联系环信技术支持设置白名单。

项目设置

实现发送和接收单聊文本消息之前,参考以下步骤设置你的项目。

1. 下载并设置 Unity Demo 项目

参考以下步骤:

  1. 克隆 chat_unity_demo (opens new window)至本地。

  2. 打开 Unity Hub,选择 Projects 页签,点击 Open 右边的下拉菜单,选择 Add project from disk,然后选择步骤 1 中本地路径下的 chat_unity_quickstart。这时,Projects 列表中显示 chat_unity_quickstart 项目。

  3. 单击 chat_unity_quickstart 打开项目。

    如果正常打开,该流程结束。

注意

如果 Demo 项目与本地 Unity Editor 版本不一致,你需要进行以下操作:

  1. 在弹出的 Editor version not installed 提示框下方,选择 Choose another Editor version

  2. 在弹出的 Select Editor version and platform 窗口中,选择本地安装的 Editor 版本,并根据后续提示打开项目。

注意

如果碰到'SpriteRenderer' does not contain a definition for 'IsUsingDeformableBuffer'这类异常,需要进行重置操作。 在Help菜单下,点击Reset Packages to defaults将包恢复默认设置。

2. 集成环信即时通讯 SDK

你可以参考以下步骤集成 SDK:

  1. 下载 Unity SDK (opens new window)
  2. 在 Unity Editor 中,选择 Assets > Import Package > Custom Package...,然后选择刚下载的 unitypackage 导入。
  3. 在弹出的 Import Unity Package 页面,点击右下角的 Import

实现发送和接收单聊消息

本节介绍如何使用即时通讯 SDK 在你的 unity 项目中实现发送和接收单聊消息。

1. 打开代码文件进行编辑

在 Unity Editor 中左侧导航栏下方,选择 Project 页签,然后选择 Assets 目录下的 Scripts 目录,双击 TestCode.cs 文件打开 Visual Studio。

注意

如果双击 TestCode.cs 文件无法打开 Visual Studio 开发环境,需将 Visual Studio 配置为 Unity 的外部工具:点击左上角的 Unity 菜单(Windows 为 Edit,Mac 为 Unity),依次选择 Preference > External Tools > External Script Editor,将脚本编辑器设置为 Visual Studio。

以下代码编辑操作均在 Visual Studio 中进行。

2. 添加命名空间

在 TestCode.cs 头部添加以下命名空间:

using AgoraChat; using AgoraChat.MessageBody; 
 

3. 初始化 SDK

在 InitSDK 方法中添加以下代码完成 SDK 初始化:

var options = new Options("appkey"); //将该参数设置为你的 App Key SDKClient.Instance.InitWithOptions(options); 
 

4. 创建账号

在 SignUpAction 方法尾部添加以下代码,创建即时通讯系统的登录账户,示例代码如下:

SDKClient.Instance.CreateAccount(username: Username.text, Password.text, callback: new CallBack
( onSuccess: () => { AddLogToLogText("sign up sdk succeed"); }, onError: (code, desc) =>
 { AddLogToLogText($"sign up sdk failed, code: {code}, desc: {desc}"); } )); 
 

注意

该注册模式在客户端实现,简单方便,主要用于测试,但不推荐在正式环境中使用。正式环境中应使用服务器端调用 Restful API 进行注册,详见 注册单个用户。

5. 登录账号

在 SignInAction 方法尾部添加以下代码,使用账号登录即时通讯系统,示例代码如下:

SDKClient.Instance.Login(username: Username.text, pwdOrToken: Password.text, callback: new CallBack
( onSuccess: () => { AddLogToLogText("sign in sdk succeed"); }, onError:(code, desc) => 
{ AddLogToLogText($"sign in sdk failed, code: {code}, desc: {desc}"); } )); 
 

6. 登出账号

在 SignOutAction 方法尾部添加以下代码,登出即时通讯系统,示例代码如下:

SDKClient.Instance.Logout(true, callback: new CallBack( onSuccess: () => { AddLogToLogText
("sign out sdk succeed"); }, onError: (code, desc) => { AddLogToLogText($"sign out sdk
 failed, code: {code}, desc: {desc}"); } )); 
 

7.发送一条文本消息

在 SendMessageAction 方法尾部添加以下代码,创建和发送一条文本消息,示例代码如下:

Message msg = Message.CreateTextSendMessage(SignChatId.text, MessageContent.text); 
SDKClient.Instance.ChatManager.SendMessage(ref msg, new CallBack( onSuccess: () => 
{ AddLogToLogText($"send message succeed, receiver: {SignChatId.text},  message: 
{MessageContent.text}"); }, onError:(code, desc) => { AddLogToLogText
($"send message failed, code: {code}, desc: {desc}"); } )); 
 

8.接收消息

接收消息需要对象继承 IChatManagerDelegate 并实现相关的回调方法,同时将对象加入到监听列表中。

示例代码如下:

在类声明的头部继承 IChatManagerDelegate 对象。

public class TestCode : MonoBehaviour, IChatManagerDelegate 
 

在 TestCode 类内部添加以下回调方法。

由于这里只测试消息接收回调,所以其他回调暂时无需实现,保留空函数即可。

public void OnMessagesReceived(List<Message> messages) { foreach (Message msg in messages) 
{ if (msg.Body.Type == MessageBodyType.TXT) { TextBody txtBody = msg.Body as TextBody;
 AddLogToLogText($"received text message: {txtBody.Text}, from: {msg.From}"); } else if 
(msg.Body.Type == MessageBodyType.IMAGE) { ImageBody imageBody = msg.Body as ImageBody;
 AddLogToLogText($"received image message, from: {msg.From}"); } else if (msg.Body.Type 
== MessageBodyType.VIDEO) { VideoBody videoBody = msg.Body as VideoBody; AddLogToLogText
($"received video message, from: {msg.From}"); } else if (msg.Body.Type == MessageBodyType.VOICE) 
{ VoiceBody voiceBody = msg.Body as VoiceBody; AddLogToLogText($"received voice message, from:
 {msg.From}"); } else if (msg.Body.Type == MessageBodyType.LOCATION) { LocationBody localBody 
= msg.Body as LocationBody; AddLogToLogText($"received location message, from: {msg.From}");
 } else if (msg.Body.Type == MessageBodyType.FILE) { FileBody fileBody = msg.Body as FileBody;
 AddLogToLogText($"received file message, from: {msg.From}"); } } } public void 
OnCmdMessagesReceived(List<Message> messages) { } public void OnMessagesRead(List<Message>
 messages) { } public void OnMessagesDelivered(List<Message> messages) { } public void
 OnMessagesRecalled(List<Message> messages) { } public void OnReadAckForGroupMessageUpdated()
 { } public void OnGroupMessageRead(List<GroupReadAck> list) { } public void OnConversationsUpdate()
 { } public void OnConversationRead(string from, string to) { } public void MessageReactionDidChange
(List<MessageReactionChange> list) { } 
 

在 AddChatDelegate 方法中添加以下代码,将 TestCode 对象实例加入监听列表。

SDKClient.Instance.ChatManager.AddChatManagerDelegate(this); 
 

在 RemoveChatDelegate 方法中添加以下代码,在对象释放时将其在监听列表中移除。

SDKClient.Instance.ChatManager.RemoveChatManagerDelegate(this); 
 

运行和测试项目

在 Unity Editor 的左侧导航栏下方,点击 Project 页签,选择 Assets 下的 Scenes 目录,双击右侧的 SampleScene 场景,然后点击 Unity Editor 上方的 Play 按钮运行场景。

注意

若未安装 iOS Build Support,运行项目前,将 Assets/ChatSDK/Scripts/Editor 路径下的 iOSBuildSetting.cs 文件移除项目文件夹。

  1. 注册用户:在 user id 文本框中输入用户 ID,在 password 文本框中输入密码,点击 Sign up 进行用户注册。注册结果会在下方显示。可创建两个用户,例如 quickstart_sender 和 quickstart_receiver,分别用于发送和接收消息。
  2. 用户登录:在 user id 文本框中输入用户 ID,例如 quickstart_sender,在 password 文本框中输入密码,点击 Sign in 进行登录。登录结果会在下方显示。
  3. 发送消息:在 single chat id 文本框中输入消息接收方的用户 ID,例如 quickstart_receiver,在 message content 文本框中输入要发送的文本内容,如 how are you.,点击 Send 发送消息,消息发送结果会在下方显示。
  4. 退出登录:直接点击 Sign out 退出登录,退出结果会在下方显示。
  5. 接收消息:在 user id 文本框中输入接收消息的用户 ID,例如 quickstart_receiver,在 password 文本框输入密码,点击 Sign in 进行登录。登录成功后,下方会显示收到的消息,例如步骤 3 中发送的 ''how are you.''。
相似文档
  • 介绍 Unity 集成相关内容。 前提条件: 开始前,请注册有效的环信即时通讯 IM 开发者账号和获取 App key,参见 环信即时通讯云管理后台 (opens new window)。 集成环境: 具体见 集成环境要求。
  • 版本 V1.1.0 Dev 2023-2-25(开发版)新增特性: 依赖的原生平台 iOS 和 Android 的 SDK 升级为 v4.0.0 版本。 新增 ChatManager#GetConversationsFromServerWithPage 方法实现从服务器分页获取会话列表。 新增 Message#Priority 属性实现聊天室消息优先级功能,确保高优先级消息优先处理。
  • 功能描述: 环信即时通讯 IM 支持多种消息类型,开发者可以方便地对本地会话、消息进行管理,可以从服务端获取历史会话和消息,提供送达回执和已读回执能力。
  • 登录即时通讯 IM app 后,用户可以在单聊、群聊、聊天室中发送如下类型的消息: 文字消息,包含超链接和表情消息。 附件消息,包含图片、语音、视频及文件消息。 位置消息。 透传消息。 自定义消息。
  • 本文介绍即时通讯 IM SDK 如何管理本地消息数据。 除了发送和接收消息外,环信即时通讯 IM SDK 还支持以会话为单位对本地的消息数据进行管理,如获取与管理未读消息、搜索和删除历史消息等。其中,会话是一个单聊、群聊或者聊天室所有消息的集合。用户需在会话中发送消息以及查看或清空历史消息。 本文介绍如何使用环信即时通讯 IM SDK 在 app 中实现这些功能。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部