上云无忧 > 文档中心 > 环信IM即时通讯使用教程(Windows) - SDK 集成概述
IM即时通讯
环信IM即时通讯使用教程(Windows) - SDK 集成概述

文档简介:
介绍 Windows SDK 集成相关内容。 前提条件: 开始前,请注册有效的环信即时通讯 IM 开发者账号和取得 App key,见 环信即时通讯云管理后台 (opens new window)。 集成环境: 具体见 集成环境要求。
*此产品及展示信息均由环信官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

介绍 Windows SDK 集成相关内容。

前提条件

开始前,请注册有效的环信即时通讯 IM 开发者账号和取得 App key,见 环信即时通讯云管理后台 (opens new window)

集成环境

具体见 集成环境要求。

SDK 初始化

初始化是使用 SDK 必要的、执行在所有接口方法调用之前的步骤。 如果进行多次初始化操作,只有第一次初始化以及相关的参数生效。

初始化示例代码:

Options options = new Options(appkey); options.AutoLogin = false; options.UsingHttpsOnly = true; options.DebugMode 
= true; SDKClient.Instance.InitWithOptions(options); 
 

初始化参数非常多,这里做主要参数介绍。参数聚合在 Options 类型中。

参数 描述
AppKey App 在控制台注册完成之后会生成该参数,这是 App 在系统中的唯一标识。
AutoLogin 是否自动登录。是否自动登录。该参数设置为 true,则在登录成功之后,后续 App 启动之后自动执行登录操作。如果登录失败会返回错误提示。Windows SDK 不支持此选项.
DebugMode 是否启用日志输出功能。设置为 true 则会启用日志输出功能,在调试开发阶段帮助定位和分析问题。
AcceptInvitationAlways 是否自动接受申请。设置为 true 则当用户申请好友时,自动接受申请。
AutoAcceptGroupInvitation 是否自动接受邀请。设置为 true 则当有人邀请当前用户入群时,自动接受邀请。
RequireAck 是否需要发送已读回执。设置为 true 则消息需要已读回执。详见 消息回执章节。
RequireDeliveryAck 是否需要发送送达回执。设置为 true 则消息需要送达回执。消息回执章节。
DeleteMessagesAsExitGroup 是否需要在离开群组时自动删除聊天历史消息。设置为 true 则在退出群组的时候,会删除聊天记录。
DeleteMessagesAsExitRoom 是否需要在离开聊天室时自动删除聊天历史消息。设置为 true 则在退出聊天室的时候,会删除记录。
IsRoomOwnerLeaveAllowed 是否允许聊天室所有者离开聊天室。设置为 true 则允许。详见 聊天室 章节。
IsAutoDownload 是否开启自动下载。设置为 true 则收到图片、视频、音频、语音消息会自动下载。详见 消息 章节。

注册用户

目前注册的方式有以下几种:

  • 通过控制台注册。
  • 通过 REST API 接口注册。
  • 调用 SDK 接口注册。该方法需在 控制台 (opens new window)设置允许 开放注册

控制台注册

控制台的注册请到 这里 (opens new window)

REST API 注册

请参考 注册用户。

SDK 注册

SDKClient.Instance.CreateAccount(username, password, callback: new CallBack( onSuccess: () =>
 { Debug.Log("CreateAccount succeed"); }, onError: (code, desc) => { Debug.Log($"CreateAccount failed,
 code: {code} ; desc: {desc}"); } ) ); 
 

用户登录

目前登录服务器有两种方式:

  • 用户 ID + 密码
  • 用户 ID + token

手动登录时传入的用户 ID 必须为 String 类型,支持的字符集详见用户注册的 RESTful 接口。

调用登录接口后,收到 OnConnected 回调表明 SDK 与环信服务器连接成功。

手动登录

用户 ID + 密码 登录是传统的登录方式。

SDKClient.Instance.Login(username, password, callback: new CallBack( onSuccess: () => { Debug.Log("login succeed");
 }, onError: (code, desc) => { if (code == 200) { Debug.Log("Already login.");; } else { Debug.Log($"login failed,
 code: {code} ; desc: {desc}"); } } ) ); 
 

用户 ID + token 是更加安全的登录方式。token 可以通过调用 REST API 获取,详见 环信用户 token 的获取。

注意

使用 token 登录时需要处理 token 过期的问题,比如在每次登录时更新 token 等机制。

SDKClient.Instance.Login(username, token, true, callback: new CallBack( onSuccess: () => { Debug.Log("login succeed");
 }, onError: (code, desc) => { if (code == 200) { Debug.Log("Already login.");; } else { Debug.Log($"login failed,
 code: {code} ; desc: {desc}"); } } ) ); 
 

自动登录(Windows SDK 暂不支持)

在初始化的时候,可以设置是否自动登录。如果设置为自动登录,则登录成功之后,后续启动初始化的时候会自动登录,登录结果通过回调返回。

退出登录

登出也是异步返回。

SDKClient.Instance.Logout(false, callback: new CallBack( onSuccess: () => { Debug.Log("Logout succeed"); }, 
onError: (code, desc) => { Debug.Log($"Logout failed, code:{code}, desc:{desc}"); } ) ); 
 

连接状态相关

你需添加 IConnectionDelegate#OnConnected 回调。

// 监听器建议在初始化完成之后,登录之前设置,这样可以恰当地收到登录通知。 class ConnectionDelegate :
 IConnectionDelegate { public void OnConnected() { } public void OnDisconnected() { } public void OnAuthFailed()
 { } public void OnRemovedFromServer() { } public void OnLoginTooManyDevice() { } public void OnChangedIMPwd() 
{ } public void OnKickedByOtherDevice() { } public void OnLoggedOtherDevice() { } public void OnForbidByServer
() { } public void OnDisconnected(int i) { } public void OnTokenExpired() { } public void OnTokenWillExpire() 
{ } } // 添加连接监听器 ConnectionDelegate connectionDelegate = new ConnectionDelegate(); SDKClient.Instance.
AddConnectionDelegate(connectionDelegate); // 移除连接监听器(退出程序时建议移除) SDKClient.Instance.Delete
ConnectionDelegate(connectionDelegate); 
 

断网自动重连

如果由于网络信号弱、切换网络等引起的连接终端,系统会自动尝试重连。重连成功或者失败的结果分别会收到通知onConnected 和 onDisconnected。

被动退出登录

对于 onDisconnected 通知,这些 errorCode 需要用户关注,收到这些通知,建议 APP 返回登录界面。

  • USER_LOGIN_ANOTHER_DEVICE=206: 用户已经在其他设备登录
  • USER_REMOVED=207: 用户账户已经被移除
  • USER_BIND_ANOTHER_DEVICE=213: 用户已经绑定其他设备
  • SERVER_SERVING_DISABLED=305: 服务器服务停止
  • USER_LOGIN_TOO_MANY_DEVICES=214: 用户登录设备超出数量限制
  • USER_KICKED_BY_CHANGE_PASSWORD=216: 由于密码变更被踢下线
  • USER_KICKED_BY_OTHER_DEVICE=217: 由于其他设备登录被踢下线
  • USER_DEVICE_CHANGED=220: 和上次设备不同导致下线

以上参数具体可以参考原生平台对应说明。

输出信息到日志文件

如果开启日志调试模式,会通过控制台输出日志。DebugMode 设置为 true。

相似文档
  • 版本 v1.1.0 Dev 2023-2-25(开发版)新增特性: 新增 ChatManager#GetConversationsFromServerWithPage 方法实现从服务器分页获取会话列表。 新增 Message#Priority 属性实现聊天室消息优先级功能,确保高优先级消息优先处理。 优化: 调整 SDKClient#InitWithOptions 方法,增加返回结果,检查 App Key 格式。
  • 功能描述: 环信即时通讯 IM 支持多种消息类型,开发者可以方便地对本地会话、消息进行管理,可以从服务端获取历史会话和消息,提供送达回执和已读回执能力。
  • 登录环信即时通讯 IM app 后,用户可以在单聊、群聊、聊天室中发送如下类型的消息: 文字消息,包含超链接和表情消息。 附件消息,包含图片、语音、视频及文件消息。 位置消息。 透传消息。 自定义消息。 针对聊天室消息并发量较大的场景,即时通讯服务提供消息分级功能。你可以通过设置消息优先级,将消息划分为高、普通和低三种级别。你可以在创建消息时,将指定消息类型,或指定成员的所有消息设置为高优先级,确保此类消息优先送达。
  • 本文介绍环信即时通讯 IM SDK 如何管理本地消息数据。SDK 内部使用 SQLite 保存本地消息,方便消息处理。 除了发送和接收消息外,环信即时通讯 IM SDK 还支持以会话为单位对本地的消息数据进行管理,如获取与管理未读消息、搜索和删除历史消息等。其中,会话是一个单聊、群聊或者聊天室所有消息的集合。用户需在会话中发送消息以及查看或清空历史消息。
  • 环信即时通讯 IM 提供消息漫游功能,即将用户的所有会话的历史消息保存在消息服务器,用户在任何一个终端设备上都能获取到历史信息,使用户在多个设备切换使用的情况下也能保持一致的会话场景。本文介绍用户如何从消息服务器获取和删除会话和消息。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部