http://www.ox-holdings.com

将注册群通知消息过滤接口移动到 MsgService新匍京娱乐场最全网站,摘要即时通讯云网易云信于2018年01月04日发布4.6版

摘要即时通讯云网易云信于2017年11月16日发布4.4版,本次更新为主要版本更新,详情见文章内容。发布的版本本次发布的版本号为 4.4版,更新时间为:2017年11月16日。iOS 更新内容新增添加聊天室用户异常掉线或主动退出的时候自动清除队列,包含接口NIMChatroomQueueUpdateRequest 添加 transient 属性NIMChatroomEventType 添加枚举 NIMChatroomEventTypeQueueBatchChangeNIMChatroomEventInfoQueueChangeItemsKey 聊天室批量变更元素键,值为包含多个键值对的字典修正修正清空不存在的最近会话的消息,回调上来的 NIMRecentSession 为 nil 的问题Android 更新内容新增1. 添加聊天室用户异常掉线或主动退出的时候自动清除队列:ChatRoomService#updateQueueEx。影响类和接口:添加通知类型:NotificationType#CHATROOM_QUEUE_BATCH_CHANGE,表示队列批量变更。添加附件类型:ChatRoomPartClearAttachment,包含清除队列的内容。2. NOS 资源下载添加 CDN 支持,添加两种可配置模板,见 SDKOptions#ServerAddress#nosAccess。3. 适配 Android O 版本通知栏,增加云信即时消息通道、消息免打扰通道,解决 target 指向26 通知栏无法弹出的问题。4. 适配 Android O 版本后台运行机制,开发者请务必在清单文件里面配置: <service android:name="com.netease.nimlib.service.ResponseService" />5. 适配 Android O+ 版本,解决 target 指向27 InvalidKeySpecException 导致的 SDK 无法登陆的问题。6. 添加新的 IPC 数据共享机制,替换不安全的多进程读写 SharedPreference,开发者请务必在清单文件里配置: <provider android:name="com.netease.nimlib.ipc.NIMContentProvider" android:authorities="{APP包名}.ipc.provider" android:exported="false" android:process=":core" />7. 添加 SDKOptions#asyncInitSDK 支持异步 SDK 初始化,降低 Application#onCreate 中 SDK 初始化函数的同步响应时间。8. 添加 SDKOptions#reducedIM 支持弱 IM 场景。如果您的APP 仅在部分场景按需使用 IM 能力(不需要在应用启动时就做自动登录),并不需要保证消息通知、数据的实时性,那么这里可以填 true。弱 IM 场景下,push 进程采用懒启动策略(延迟到用户登录阶段),启动后其生命周期将跟随 UI 进程,降低弱 IM 场景的APP的后台功耗开销。9. 添加 SDKOptions.checkManifestConfig,自动检查 SDK 配置是否完全,如果不完全将抛出异常提示。强烈建议开发者在开发阶段开启检查,检查通过后,线上环境关闭。10. API 调用框架增强:支持带 Looper 的非UI线程发起的异步API调用,直接回调到调用者线程。老版本会默认回调到 UI 线程。提供异步强制转成同步的接口:NIMClient#syncRequest,允许设置最大同步等待时间,支持非 UI 线程里需要同步调用云信 API的场景。添加自动生成的 NIMSDK类,开发者可以直接采用 NIMSDK#getXXXService 方法获取服务接口,不再需要传递 XXXService.class,简化 API 调用方式。其他插件自动生成的调用入口类为:NIMChatRoomSDK、NIMLuceneSDK。例如采用NIMSDK.getAuthService().login()替换NIMClient.getService(AuthService.class).login()。11. 添加 NIMClient#getSDKVersion 接口,运行时获取当前集成的 SDK 版本号。变更1. 类变更:com.netease.nimlib.sdk.uinfo.UserInfoProvider#UserInfo 包名变更为 com.netease.nimlib.sdk.uinfo.model.UserInfo,开发者升级到此版本时,请统一修改 UserInfo import 的包名。2. 类成员函数变更:UserInfoProvider 移除 getDefaultIconResId、getAvatarForMessageNotifier、getTeamIcon 三个函数,统一替换为新增的函数,根据会话类型、会话ID返回消息提醒需要的头像位图:getAvatarForMessageNotifier(sessionType, sessionId),请参考最新 Demo 源码中 NimUserInfoProvider 类中提供的替换方案。3. 添加 NIMUitl#isMainProcess 接口,保证 SDK 初始化及 APP 初始化进程判断方式统一,请开发者替换 Application#onCreate 中主进程判断方法为此方法。4. 移除 SDKOptions#enableSDKBackgroundReconnectStrategy 后台自动重连开关,请采用弱 IM 模式替换。5. 修复 Push 进程自动登录被踢出后,部分机器进程被系统反复调度重启时依然发起连接的问题。6. 针对 SDKOptions#sdkStorageRootPath 配置的外置存储缓存根目录,如果开发者配置在 Context#getExternalCacheDir 及 Context#getExternalFilesDir 等应用扩展存储缓存目录下(即/sdcard/Android/data/{package}),SDK 内部将不再检查写权限。值得注意的是,改缓存目录下的的文件会随着App卸载而被删除,也可以由用户手动在设置界面里面清除。7. 优化唤醒策略,减少不必要的唤醒。优化 Push 进程无法唤醒 UI 时将采用的 “自杀机制”,先切断所有唤醒路径后再安全退出。8. 修复匿名聊天室断网重连过程中如果出现回调 1001 的错误码时(SDK无法通过回调获取聊天室ip)时,SDK 无法继续重连的问题。9. 修复聊天室调用 ChatRoomSerivce#updateMyRoomRole 后,在断网重连过程中,丢失角色信息更新的问题。Windows(PC) SDK 更新内容新增聊天室用户异常掉线或主动退出的时候自动清除队列, nim_chatroom.hnim_chatroom_queue_offer_async(...), json_extension = "{"transient":true}" 设置此次更新的元素会在特定场景下被自动清除新增通知类 kNIMChatRoomNotificationIdQueueBatchChanged 用在麦序队列中有批量变更,发生在元素提交者离开聊天室或者从聊天室异常掉线时修复修复获取最近会话列表时可能导致CPU增高的问题Web SDK 更新内容新增聊天室新增麦序队列元素,增加可配置选项,用户从聊天室掉线或退出的时候,需要删除这个元素变更取消同步群成员配置选项,强制要求开发者按需同步群成员列表下载地址请从以下官网地址下载:

摘要即时通讯云网易云集SDK新版发布,本次发布的版本号为:2.5.0。发布的版本本次发布的版本号为 2.5.0版,更新时间为:2016年7月08日。iOS 2.5.0 更新内容新增添加定期清理 SDK 日志的功能添加聊天室临时禁言的接口支持转发消息网络通话新增是否自动旋转远端画面的设置autoRotateRemoteVideo修正修复聊天室 Tip 消息无法正常解析的问题Android 2.5.0 更新内容新增1. 添加文本消息的全局搜索接口:MsgService#searchAllMessageHistory。2. 添加消息转发功能:MessageBuilder#createForwardMessage,支持除通知消息和音视频消息以外的消息类型。3. 添加聊天室临时禁言接口:ChatRoomService#markChatRoomTempMute,支持设置临时禁言时长。变更1. 将注册群通知消息过滤接口移动到 MsgService 中:MsgService#registerIMMessageFilter ,并支持单聊和群聊的通知类型消息过滤,不再限于群通知消息,同时支持音视频类型消息过滤。2. 聊天室架构调整,聊天室业务仅在 UI 进程处理。3. SDK 输出jar包按模块分离:nim-sdk.jar(必须)、nim-chatroom.jar(可选聊天室模块)、nim-rts.jar(可选实时会话白板模块)、nim-avchat.jar(可选实时音视频模块)、nrtc-sdk.jar(实时会话、实时音视频基础库),供开发者按需组合使用。Web SDK 2.5.0 更新内容变更获取用户名片数组限制每次最多只能获取150个名片新增转发消息重发消息获取包含关键词的本地历史记录新增参数global表示是否全局搜索同步开关syncExtraTeamInfo, 控制是否同步额外的群信息, 默认true会同步额外的群信息, 目前包括当前登录用户是否开启某个群的消息提醒 (SDK 只是存储了此信息, 具体用此信息来做什么事情完全由开发者控制)调用接口修改自己的群属性来关闭/开启某个群的消息提醒调用接口是否需要群消息通知来查询是否需要群消息通知设置聊天室临时禁言Windows(PC) SDK 2.5.0 更新内容修复语音播放停止延迟问题会话列表更新时消息未读数目错误的问题新增消息历史本地全局搜索, nim_msglog.h群组增加获取群信息和成员信息的同步接口, nim_team.h聊天室临时禁言, nim_chatroom.h消息转发接口, nim_talk.h音视频支持SOCKS5代理对端视频画面自动旋转开关下载地址请从以下官网地址下载:

摘要即时通讯云网易云信SDK新版发布,本次发布的版本号为:3.2.0,新增加了多人实时白板等主要特性。发布的版本本次发布的版本号为 3.2.0版,更新时间为:2016年11月30日。iOS 更新内容新增在NIMSDKConfig.h中增加是否需要多端同步未读数的开关shouldSyncUnreadCount新增多人实时会话(多人白板)服务,支持单播和广播发送实时会话数据网络通话新增语音前处理开关设置,可以选择性关闭语音降噪和人声检测等功能网络通话的网络状况增加用户 id 参数,以区分不同用户的网络状况互动直播新增视频画面混屏模式设置,可以选择预设的几种混屏模式变更消息撤回回调变更3.2.0 之前:onMessageRevoked:3.2.0 之后:onRecvRevokeMessageNotification:NIMMediaManager的回调接口和其他管理器一致为addDelegate:以及removeDelegate:网络通话的网络状况回调接口从onCall:netStatus:变更为onNetStatus:user:,增加了用户 id 参数网络通话的网络状况查询接口 从netStatus变更为netStatus:,增加了用户 id 参数实时会话数据服务器录制文件格式变化:3.2.0 之前:用户发送的数据包直接被写入文件3.2.0 之后:用户发送每一个数据包前增加包头(包长字段和时间戳字段)后再写入录制文件,格式详情请参考使用指南的服务器录制文件格式章节UI 组件提供更全面,更简洁的配置,并支持 CocoaPodsAndroid 更新内容新增1. 添加第三方推送服务:NIMPushClient,MixPushService,目前已接入小米推送。2. 添加会话未读数多端同步功能,开关为 SDKOptions#sessionReadAck,默认关闭。3. 添加第三方推送免打扰设置:MixPushService#setPushNoDisturbConfig。4. 添加本地消息拉取扩展接口:MsgService#queryMessageListExTime,支持时间和条数共同限定结果集。5. 添加64位支持。6. 添加音视频互动直播连麦画中画混屏模式设置:AVChatOptionalConfig#livePIPMode。7. 添加多人白板:- 创建一个多人白板房间, RTSManager2#createSession- 加入一个多人白板房间, RTSManager2#joinSession- 离开一个多人白板房间, RTSManager2#leaveSession变更1. 最低支持版本变更为Android 4.0 (Ice Cream Sandwich), 其中音视频通话最低支持版本为Android 4.1 (Jelly Bean)。2. 登录优化。3. 消息撤回优化,针对离线时对方发送消息并撤回的场景,下次登录时会收到 MsgServiceObserve#observeRevokeMessage 通知,可以获得被撤回消息的时间,便于在 UI 上展现离线期间消息撤回的提示。4. 白板状态回调 RTSChannelStateObserver 变更:- 所有回调添加 localSessionId 参数- 添加 onUserJoin 回调- 添加 onUserLeave 回调- 移除 onRecordInfo 回调- 变更 onConnectResult 回调,添加录制文件相应信息5. 白板服务器录制数据格式修改。Windows(PC) SDK 更新内容修复优化音频处理流程优化高清摄像头数据解析,提高高清摄像头采集帧率变更逻辑:关闭麦克风将不认为是静音状态,与伴音功能兼容服务器白板录制,针对3.2之后的版本,在每条数据前追加4字节长度信息和4字节的时间戳,详情看开发手册优化IM和聊天室登录流程新增新增多人白板功能,通过nim_rts_create_conf创建多人白板,再由nim_rts_join_conf接口加入多人白板。多人白板不支持视频通道,如果需要上层APP可以另外开启多人音视频通话。白板的创建及加入等接口将返回白板通道的channelid,用于和服务器的白板会话抄送对应。新增设备类型 kNIMDeviceTypeAudioHook,用户可采集播放器音频,需要使用sdk新增的nim_audio_hook.dll设备监听中可以监听伴音设备,kNIMDeviceTypeAudioHook开始工作和被顶替(顶替是指伴音只允许有一个,如果有别的进程也使用了sdk中的伴音功能,则会被顶替,这时之前的伴音失效),将会通过回调上报。会话消息已读未读状态多端同步会话属性增加设置置顶和扩展数据字段接口, nim_session.hIM和聊天室增加获取当前登陆状态的接口, nim_client.h nim_chatroom.h下载地址请从以下官网地址下载:

摘要即时通讯云网易云信于2018年01月04日发布4.6版,本次更新为主要版本更新,详情见文章内容。发布的版本本次发布的版本号为 4.6版,更新时间为:2018年01月04日。iOS 更新内容新增新增在后台自动执行重连开关@interface NIMSDKConfig : NSObject/** * 是否禁止后台重连 * @discusssion 默认为 NO。即默认情况下,当程序退到后台断开连接后,如果 App 仍能运行,SDK 将继续执行自动重连机制。设置为 YES 后在后台将不自动重连,重连将被推迟到前台进行。 * 只有特殊用户场景才需要此设置,无明确原因请勿设置。 */@property (nonatomic,assign) BOOL reconnectInBackgroundStateDisabled;@end新增聊天室历史记录拉取可以按类型筛选字段/** * 检索服务器历史消息选项 (服务器) */@interface NIMHistoryMessageSearchOption : NSObject/** * 查询的消息类型 * @discusssion 消息类型组合,默认为 nil ,搜索全类型。 此参数只对聊天室会话有效 */@property (nonatomic,copy) NSArray<NSNumber *> *messageTypes;@end易盾反垃圾,支持对单条消息配置对应的反垃圾业务规则,NIMAntiSpamOption新增字段 businessId。/** * 反垃圾选项 * @discussion 这个选项用于配置易盾反垃圾,设置 enabled 为 YES (默认为 NO) 后该消息进投递到易盾系统进行反垃圾检测 (需要开启易盾服务) */@interface NIMAntiSpamOption : NSObject/** * 用户在易盾配置的额外反垃圾的业务ID */@property (nullable,nonatomic,copy) NSString *businessId;@end新增聊天室队列权限修改,NIMChatroomUpdateTag中新增字段 NIMChatroomUpdateTagQueueModificationLevel修正聊天室缓存用户扩展信息,保证掉线重连后不清除Android 更新内容新增1. 易盾反垃圾支持对单条消息配置对应的反垃圾业务规则。2. 新增支持海外推送 FCM 以及魅族推送。3. 支持配置聊天室队列管理权限。4. 支持群管理员撤销其他人消息。5. 支持视频消息获取远程缩略图 url。6. 聊天室历史记录拉取可按类型筛选。变更1. 修复酷派偶现崩溃问题。2. 接口变更:List<NimRobotInfo> getRobotInfo(List<String> accounts);改为List<NimRobotInfo> getRobotInfoList(List<String> accounts);3.MessageNotifierCustomization新增消息撤回通知文案自定义接口:/** * 定制消息撤回提醒文案 * @param revokeAccount 撤回操作者账号 * @param item 被撤回的消息 * @return */String makeRevokeMsgTip(String revokeAccount, IMMessage item);4.ChatRoomPartClearAttachment附件内容变更getContentMap()返回由Map<String,Object>变为Map<String, String>getChatRoomQueueChangeType()返回ChatRoomQueueChangeType.PARTCLEARWindows(PC) SDK 更新内容新增群主或群管理员可以撤回其他群成员发送的消息的功能用户配置的对某单条消息另外的反垃圾的业务ID的功能视频消息主动获取封面功能NOS域名迁移NOS加速地址,上传、下载地址等统一配置聊天室历史记录拉取可以按类型筛选功能聊天室队列权限可配置聊天室更新用户信息后,断线重连进入聊天室时,相应信息依旧还在的功能Web SDK 更新内容新增聊天室队列管理权限可配置聊天室历史记录拉取可以按类型筛选群管理员可以撤回其他人发的消息易盾反垃圾,支持对单条消息配置对应的反垃圾业务规则变更WebSocket链路若因网络状态不佳,悄悄被踢,将自动重连,不再由上层做处理WebSocket握手重连优化,清除实例接口下载地址请从以下官网地址下载:

require

请查阅开发准备来下载并引入 SDK 文件

  • 一个微信小程序同时只能有一个 WebSocket 连接, 所以没有办法同时使用 NIM 和 Chatroom
  • 示例代码如下
// 只使用 NIM
var NIM = require('NIM_Web_NIM_v')
// 只使用 Chatroom
var Chatroom = require('NIM_Web_Chatroom_v')

发送聊天室消息

包括以下接口

  • 发送聊天室文本消息
  • 预览聊天室文件
  • 发送聊天室文件消息
  • 发送聊天室地理位置消息
  • 发送聊天室提醒消息
  • 发送聊天室自定义消息
  • 发送聊天室消息的配置选项

打包

如果开发者选用 webpack/babel 来打包, 那么请使用 exclude 将 SDK 文件排除, 避免 babel 二次打包引起的错误

聊天室功能概述

  • 目前不支持通过 SDK 接口建立/解散聊天室。
  • 进入聊天室时必须建立新的连接,退出聊天室或者被踢会断开连接,在聊天室中掉线会有自动重连,开发者需要监听聊天室连接状态来做出正确的界面表现。
  • 支持聊天人数无上限。
  • 聊天室只允许用户手动进入,无法进行邀请。
  • 支持同时进入多个聊天室,会建立多个连接。
  • 断开聊天室连接后,服务器不会再推送该聊天室的消息给此用户。
  • 在进行一切操作之前,必须先进入聊天室。即必须先初始化好聊天室并且收到onconnect回调。
  • 用户进入聊天室之后,不会收到此聊天室的历史消息推送。如有历史消息需求,可以调用消息查询接口进行显示。
  • 聊天室成员分固定成员和游客两种类型。

发送聊天室文本消息

var msg = chatroom.sendText({
text: 'hello',
done: sendChatroomMsgDone
});
console.log('正在发送聊天室text消息, id=' + msg.idClient);
function sendChatroomMsgDone(error, msg) {
console.log('发送聊天室' + msg.type + '消息' + (!error?'成功':'失败') + ', id=' + msg.idClient, error, msg);
}

删除所有本地系统通知

  • 如果不支持数据库, 算成功
  • 此方法同时会清空系统通知未读数, 开发者会收到onupdatesysmsgunread
nim.deleteAllLocalSysMsgs({
done: deleteAllLocalSysMsgsDone
});
function deleteAllLocalSysMsgsDone(error, obj) {
console.log(error);
console.log(obj);
console.log('删除所有本地系统通知' + (!error?'成功':'失败'));
}

发送智能机器人消息

  • 参见发送机器人消息

发送消息的配置选项

  • 上面的各个发送消息的接口都可以配置额外的选项, 来满足开发者对服务器的自定义需求。
  • custom: 扩展字段
  • 推荐使用JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
  • pushContent: 自定义推送文案
  • pushPayload: 自定义的推送属性
  • 推荐使用JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
  • needPushNick: 是否需要推送昵称
  • apns: 特殊推送选项, 只在群会话中使用
  • apns.accounts: 需要特殊推送的账号列表, 不填表示推送给当前会话内的所有用户
  • apns.content: 需要特殊推送的文案, 不填的话默认为 pushContent
  • apns.forcePush 是否强制推送, 不填的话默认 true. true 表示即使推送列表中的用户屏蔽了当前会话(如静音), 仍能够推送当前这条内容给相应用户
  • isHistoryable: 是否存储云端历史
  • isRoamingable: 是否支持漫游
  • isSyncable: 是否支持发送者多端同步
  • cc: 是否支持抄送
  • isPushable: 是否需要推送
  • isOfflinable: 是否要存离线
  • isUnreadable: 是否计入消息未读数
  • yidunEnable: 是否需要过易盾反垃圾
  • antiSpamContent: 在开启yidunEnable后, 开发者自定义的反垃圾字段(json格式),格式如下:{"type": 1, "data": "custom content"} 字段说明:type:1.文本,2.图片,3视频,data内容:文本内容or图片地址or视频地址
  • 下面给一个发送文本消息的例子, 发送其它消息的接口类似
var msg = nim.sendText({
scene: 'p2p',
to: 'account',
text: 'hello',
custom: '{}',
done: sendMsgDone
});

加入静音列表

  • SDK只负责维护静音列表, 具体要根据静音列表进行的操作由开发者决定
  • SDK内部调用nim.markInMutelist来完成实际工作
nim.addToMutelist({
account: 'account',
done: addToMutelistDone
});
function addToMutelistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('加入静音列表' + (!error?'成功':'失败'));
if (!error) {
addToMutelist(obj);
}
}

获取 idClient 对应的本地消息

  • 如果不支持数据库, 算成功, 返回 null
nim.getLocalMsgByIdClient({
idClient: 'd7a1b2c63066e1038e9aa01321652370',
done: getLocalMsgByIdClientDone
});
function getLocalMsgByIdClientDone(error, obj) {
console.log(error);
console.log(obj);
console.log('获取本地消息' + (!error?'成功':'失败'));
if (!error) {
console.log(obj.msg);
}
}

聊天室消息

聊天室信息对象

聊天室信息对象有以下字段

  • id: 聊天室 id
  • name: 聊天室名字
  • announcement: 聊天室公告
  • broadcastUrl: 直播地址
  • custom: 第三方扩展字段
  • 推荐使用JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
  • createTime: 创建时间
  • updateTime: 更新时间
  • creator: 创建者账号
  • onlineMemberNum: 当前在线人数
  • mute 是否禁言, 禁言状态下普通成员不能发送消息, 创建者和管理员可以发送消息

修改图片下载的名字

  • 此方法会返回一个新的地址
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA=';
var nameUrl = nim.packFileDownloadName({
url: url,
name: '测试.jpg'
});
console.log(nameUrl);

群成员类型

  • 'normal' (普通成员)
  • 'owner' (群主)
  • 'manager' (管理员)

获取本地系统通知

  • 在支持数据库的时候, SDK 会将内建系统通知存储于数据库中
  • 当开发者发现系统通知的未读数大于系统通知数量时, 说明有未读系统通知存储于数据库里面, 需要从本地拉取这部分系统通知
  • 默认获取所有种类的系统通知, 可以传入参数category来限制系统通知种类
  • 默认获取所有类型的系统通知, 可以传入参数type来限制系统通知类型
  • 默认获取所有已读和未读的系统通知, 可以传入参数read来限制已读状态
  • 如果不传, 默认获取所有已读和未读的系统通知
  • 如果传 true, 那么只获取已读的系统通知
  • 如果传 false, 那么只获取未读的系统通知
  • lastIdServer为上次查询的最后一条系统通知的idServer, 第一次不填
  • limit为本次查询的消息数量限制, 最多 100 条, 默认 100 条
  • 默认从最近的系统通知开始往前查找本地系统通知, 可以传入参数reverse=true来从第一条系统通知开始往后查找本地系统通知
nim.getLocalSysMsgs({
lastIdServer: 'lastIdServer',
limit: 100,
done: getLocalSysMsgsDone
});
function getLocalSysMsgsDone(error, obj) {
console.log(error);
console.log(obj);
console.log('获取本地系统通知' + (!error?'成功':'失败'));
if (!error) {
console.log(obj.sysMsgs);
}
}

处理系统通知

这里涉及到了好友的处理, 请跟好友关系托管合在一起看

function handleSysMsgs(sysMsgs) {
if (!Array.isArray(sysMsgs)) {sysMsgs=[sysMsgs];}
sysMsgs.forEach(function(sysMsg) {
var idServer = sysMsg.idServer;
switch (sysMsg.type) {
case 'addFriend':
onAddFriend(sysMsg.friend);
break;
case 'applyFriend':
break;
case 'passFriendApply':
onAddFriend(sysMsg.friend);
break;
case 'rejectFriendApply':
break;
case 'deleteFriend':
onDeleteFriend(sysMsg.from);
break;
case 'applyTeam':
break;
case 'rejectTeamApply':
break;
case 'teamInvite':
break;
case 'rejectTeamInvite':
break;
default:
break;
}
});
}

初始化 SDK

请查阅开发准备来下载并引入 SDK 文件

获取群

  • 开发者可以调用此接口获取群资料
nim.getTeam({
teamId: 123,
done: getTeamDone
});
function getTeamDone(error, obj) {
console.log(error);
console.log(obj);
console.log('获取群' + (!error?'成功':'失败'));
}

转发消息

  • msg: 待转发的消息
  • scene: 新的场景
  • to: 新的接收方, 对方帐号或者群id
nim.forwardMsg({
msg: someMsg,
scene: 'p2p',
to: 'account',
done: sendMsgDone
})
console.log('正在转发消息', someMsg)

发送消息已读回执

  • 目前只支持'p2p'会话
  • 如果没有传入消息, 则直接返回成功
  • 如果已经发送过比传入的消息的时间戳大的已读回执, 那么直接返回成功
  • 参数msg为要发送已读回执的会话的最后一条收到的消息, 可以直接通过session.lastMsg来获取此消息
nim.sendMsgReceipt({
msg: session.lastMsg,
done: sendMsgReceiptDone
});
function sendMsgReceiptDone(error, obj) {
console.log('发送消息已读回执' + (!error?'成功':'失败'), error, obj);
}

用用户名片托管

SDK 提供用户名片托管

消息初始化参数

  • 这里的参数并不是所有的初始化参数, 请查阅初始化 SDK, 以及其它章节的初始化参数
  • 初始化SDK
  • 多端登录初始化参数
  • 用户关系初始化参数
  • 好友关系初始化参数
  • 用户名片初始化参数
  • 群组初始化参数
  • 会话初始化参数
  • 消息初始化参数
  • 系统通知初始化参数
  • 同步完成
  • 完整的初始化代码
  • 请参考处理群通知消息

示例代码

var nim = NIM.getInstance({
onroamingmsgs: onRoamingMsgs,
onofflinemsgs: onOfflineMsgs,
onmsg: onMsg
});
function onRoamingMsgs(obj) {
console.log('收到漫游消息', obj);
pushMsg(obj.msgs);
}
function onOfflineMsgs(obj) {
console.log('收到离线消息', obj);
pushMsg(obj.msgs);
}
function onMsg(msg) {
console.log('收到消息', msg.scene, msg.type, msg);
pushMsg(msg);
switch (msg.type) {
case 'custom':
onCustomMsg(msg);
break;
case 'notification':
// 处理群通知消息
onTeamNotificationMsg(msg);
break;
default:
break;
}
}
function pushMsg(msgs) {
if (!Array.isArray(msgs)) { msgs = [msgs]; }
var sessionId = msgs[0].sessionId;
data.msgs = data.msgs || {};
data.msgs[sessionId] = nim.mergeMsgs(data.msgs[sessionId], msgs);
}
function onCustomMsg(msg) {
// 处理自定义消息
}

参数解释

  • shouldIgnoreNotification, 是否要忽略某条通知类消息, 该方法会接收一个消息对象, 如果该方法返回 true, 那么 SDK 将忽略此条通知类消息
  • onroamingmsgs, 同步漫游消息的回调, 每个会话对应一个回调, 会传入消息数组
  • onofflinemsgs, 同步离线消息的回调, 每个会话对应一个回调, 会传入消息数组
  • 在支持数据库时并且启用了多 tab 同时登录, 那么如果多个 tab 页同时断线重连之后, 只会有一个 tab 页负责存储漫游消息和离线消息, 即只会有一个 tab 页会收到 onroamingmsgsonofflinemsgs 回调, 其它 tab 页在同步完成之后, 需要调用获取本地历史记录来从本地缓存中拉取消息记录
  • onmsg, 收到消息的回调
  • 当前登录帐号在其它端发送消息之后也会收到此回调, 注意此时消息对象的from字段就是当前登录的帐号
  • 可以调用nim.mergeMsgs来合并数据

下载并引入 SDK 文件

  • 从云信官网下载 Web SDK 并解压
  • 目录结构介绍
  • 如果要在浏览器里面使用 SDK, 相应的 JS 文件都在 js 目录下.
  • 如果要在微信小程序里面使用 SDK, 相应的 JS 文件在 weixin-app 目录下.
  • 选择并引入
  • 如果要使用 IM 功能, 请引入 NIM_Web_NIM_v.js
  • 如果通过 script 标签引入, 请通过 NIM 来获取引用
  • 如果要使用聊天室功能, 请引入 NIM_Web_Chatroom_v.js
  • 如果通过 script 标签引入, 请通过 Chatroom 来获取引用
  • 如果同时使用 IM 和聊天室功能, 请引入 NIM_Web_SDK_v.js
  • <p style='color: #d9534f;'>如果通过 script 标签引入, 请通过 SDK.NIMSDK.Chatroom 来获取 NIMChatroom 的引用, 下文中的 API 都是通过 NIMChatroom 来调用的</p>
  • 如果要使用 IM 的插件版实时音视频功能, 请引入 NIM_Web_Netcall_v.js, 通过 Netcall 来获取引用, 调用 NIM.use(Netcall) 来加载实时音视频插件
  • 如果要使用 IM 的WebRTC实时音视频功能, 请引入 NIM_Web_WebRTC_v.js, 通过 WebRTC 来获取引用, 调用 NIM.use(WebRTC) 来加载实时音视频插件

更新群

  • 普通群不可以更新
  • 群加入方式
  • 群被邀请模式
  • 群邀请模式
  • 群信息修改权限
  • 群信息自定义字段修改权限
  • 更新群后, 所有群成员会收到一条类型为'updateTeam'的群通知消息。此类群通知消息的from字段的值为更新群的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为被更新的群信息
nim.updateTeam({
teamId: 123,
name: '群名字',
avatar: 'avatar',
intro: '群简介',
announcement: '群公告',
joinMode: 'needVerify',
custom: '自定义字段',
done: updateTeamDone
});
function updateTeamDone(error, team) {
console.log(error);
console.log(team);
console.log('更新群' + (!error?'成功':'失败'));
}

interlace图片

  • 只支持通过预览文件或发送文件消息拿到的图片 url, 或者经过其他图片操作后拿到的图片 url
  • 在网络环境较差时, interlace 后的图片会以从模糊到清晰的方式呈现给用户
var url = 'http://nim.nos.netease.com/MTAxMTAwMg==/bmltYV8xNDc5OTNfMTQ0MzE0NTgyNDI0M184YjFkYTMwMS02NjcxLTRiYjktYTUwZC04ZTVlZjZlNzZjMzA=';
var interlaceUrl = nim.interlaceImage({
url: url,
done: interlaceImageDone
});
function interlaceImageDone(error, obj) {
console.log(error);
console.log(obj);
console.log('interlace 图片' + (!error?'成功':'失败'));
}

重置当前回话

  • 重置当前会话后, 所有会话在收到消息之后会更新未读数
nim.resetCurrSession();

本地历史记录

  • 在支持数据库的时候, SDK 会将消息存储于数据库中
  • 当开发者发现会话的未读数大于消息数量时, 说明有未读消息存储于数据库里面, 需要调用获取本地历史记录来获取更多消息
  • 其它接口
  • 获取包含关键词的本地历史记录
  • [获取 idClient 对应的本地消息](#获取 idClient 对应的本地消息)
  • [获取 idClients 对应的本地消息](#获取 idClients 对应的本地消息)
  • 更新本地消息
  • 删除本地消息
  • 删除某个会话的本地消息
  • 删除所有本地消息

依赖说明

  • SDK 使用一系列开源库来更好的完成工作, 所有库均挂在 NIM 下面
  • SDK 使用 es5-shim 来让低版本浏览器兼容 ES5 的部分方法
  • SDK 使用 platform.js 来检测浏览器平台, 通过 NIM.platform 来获取此库的引用
  • SDK 使用 socket.io-client 0.9 来建立 Socket 连接, 通过 NIM.iowindow.io 来获取此库的引用

服务器推送的订阅事件(初始化)

  • 这里的参数并不是所有的初始化参数, 请查阅初始化 SDK, 以及其它章节的初始化参数

示例代码

var nim = NIM.getInstance({
onpushevents: onPushEvents
});
function onPushEvents(param) {
console.log('订阅事件', param.msgEvents);
}

参数解释

  • onpushevents, 服务器推送事件的回调函数,以下情况会收到此回调:
  • 订阅了对应账号对应类型的事件,且订阅关系在有效期内,对方发布了相应时间
  • 此回调会收到一个参数param, 它有一个字段msgEvents的值为操作的类型, 具体类型如下:
  • msgEvents, 推送事件对象数组,数组对象中包含以下一些字段
  • msgEvents[i].account,发布对应事件的账号
  • msgEvents[i].type,事件类型
  • msgEvents[i].value,事件值
  • msgEvents[i].clientType,客户端类型
  • msgEvents[i].custom,用户发布事件的自定义消息
  • msgEvents[i].idClient,消息本地客户端id
  • msgEvents[i].idServer,消息服务器id
  • msgEvents[i].serverConfig,服务器下推的配置消息(客户端不可发布)

会话初始化参数

  • 这里的参数并不是所有的初始化参数, 请查阅初始化 SDK, 以及其它章节的初始化参数
  • 初始化SDK
  • 多端登录初始化参数
  • 用户关系初始化参数
  • 好友关系初始化参数
  • 用户名片初始化参数
  • 群组初始化参数
  • 会话初始化参数
  • 消息初始化参数
  • 系统通知初始化参数
  • 同步完成
  • 完整的初始化代码

示例代码

var nim = NIM.getInstance({
onsessions: onSessions,
onupdatesession: onUpdateSession
});
function onSessions(sessions) {
console.log('收到会话列表', sessions);
data.sessions = nim.mergeSessions(data.sessions, sessions);
updateSessionsUI();
}
function onUpdateSession(session) {
console.log('会话更新了', session);
data.sessions = nim.mergeSessions(data.sessions, session);
updateSessionsUI();
}
function updateSessionsUI() {
// 刷新界面
}

参数解释

  • syncSessionUnread, 是否同步会话的未读数, 默认不同步
  • 如果选择同步
  • 那么在一个端读过的会话在其它端也会被标记为已读
  • 在调用设置当前会话的时候 SDK 会自动同步一次未读数, 此后如果收到当前会话的消息, 需要手动调用重置会话未读数来同步未读数
  • onsessions, 同步最近会话列表回调, 会传入会话列表, 按时间正序排列, 即最近聊过天的放在列表的最后面
  • 此回调是增量回调, 可以调用nim.mergeSessions来合并数据
  • onupdatesession, 更新会话的回调, 会传入会话对象, 以下情况会收到此回调
  • 收到消息
  • 发送消息
  • 设置当前会话
  • 重置会话未读数

系统通知初始化参数

  • 这里的参数并不是所有的初始化参数, 请查阅初始化 SDK, 以及其它章节的初始化参数
  • 初始化SDK
  • 多端登录初始化参数
  • 用户关系初始化参数
  • 好友关系初始化参数
  • 用户名片初始化参数
  • 群组初始化参数
  • 会话初始化参数
  • 消息初始化参数
  • 系统通知初始化参数
  • 同步完成
  • 完整的初始化代码

示例代码

var nim = NIM.getInstance({
onofflinesysmsgs: onOfflineSysMsgs,
onsysmsg: onSysMsg,
onupdatesysmsg: onUpdateSysMsg,
onsysmsgunread: onSysMsgUnread,
onupdatesysmsgunread: onUpdateSysMsgUnread,
onofflinecustomsysmsgs: onOfflineCustomSysMsgs,
oncustomsysmsg: onCustomSysMsg
});
function onOfflineSysMsgs(sysMsgs) {
console.log('收到离线系统通知', sysMsgs);
pushSysMsgs(sysMsgs);
}
function onSysMsg(sysMsg) {
console.log('收到系统通知', sysMsg)
pushSysMsgs(sysMsg);
}
function onUpdateSysMsg(sysMsg) {
pushSysMsgs(sysMsg);
}
function pushSysMsgs(sysMsgs) {
data.sysMsgs = nim.mergeSysMsgs(data.sysMsgs, sysMsgs);
refreshSysMsgsUI();
}
function onSysMsgUnread(obj) {
console.log('收到系统通知未读数', obj);
data.sysMsgUnread = obj;
refreshSysMsgsUI();
}
function onUpdateSysMsgUnread(obj) {
console.log('系统通知未读数更新了', obj);
data.sysMsgUnread = obj;
refreshSysMsgsUI();
}
function refreshSysMsgsUI() {
// 刷新界面
}
function onOfflineCustomSysMsgs(sysMsgs) {
console.log('收到离线自定义系统通知', sysMsgs);
}
function onCustomSysMsg(sysMsg) {
console.log('收到自定义系统通知', sysMsg);
}

参数解释

  • onofflinesysmsgs, 同步离线系统通知的回调, 会传入系统通知数组
  • 在支持数据库时并且启用了多 tab 同时登录, 那么如果多个 tab 页同时断线重连之后, 只会有一个 tab 页负责存储离线系统通知, 即只会有一个 tab 页会收到 onofflinesysmsgs回调, 其它 tab 页在同步完成之后, 需要调用获取本地系统通知来从本地缓存中拉取系统通知
  • onsysmsg, 收到系统通知的回调, 会传入系统通知
  • 收到系统通知后需要调用标记系统通知为已读状态来将系统通知标记为已读状态
  • onupdatesysmsg, 更新系统通知后的回调, 会传入{@link SystemMessage|系统通知}
  • 以下情况会收到此回调
  • 通过好友申请
  • 拒绝好友申请
  • 接受入群邀请
  • 拒绝入群邀请
  • 通过入群申请
  • 拒绝入群申请
  • 这些操作的发起方会收到此回调, 接收被更新的系统通知, 根据操作的类型系统通知会被更新为下面两种状态
  • 'passed': 已通过
  • 'rejected': 已拒绝
  • onsysmsgunread: 收到系统通知未读数的回调
  • SDK 会管理内建系统通知的未读数, 此回调接收的对象包括以下字段
  • friend: 所有跟好友相关的系统通知的未读数
  • addFriend: 直接加为好友的未读数
  • applyFriend: 申请加为好友的未读数
  • passFriendApply: 通过好友申请的未读数
  • rejectFriendApply: 拒绝好友申请的未读数
  • deleteFriend: 删除好友的未读数
  • team: 所有跟群相关的系统通知的未读数
  • teamInvite: 入群邀请的未读数
  • rejectTeamInvite: 接受入群邀请的未读数
  • applyTeam: 入群申请的未读数
  • rejectTeamApply: 拒绝入群申请的未读数
  • deleteMsg: 撤回消息的未读数
  • onupdatesysmsgunread: 更新系统通知未读数的回调
  • onofflinecustomsysmsgs, 同步离线自定义系统通知的回调, 会传入系统通知数组
  • oncustomsysmsg, 收到自定义系统通知的回调, 会传入系统通知

系统通知分为两种

  • 内建系统通知
  • 目前所有的内建系统通知都是与高级群相关的通知, 某些群操作后相关的群成员会收到相应的系统通知。
  • 内建系统通知与群通知消息的区别是系统通知是发给单人的通知, 群通知消息是发给所有群成员的消息。
  • 自定义系统通知

发送聊天室提醒消息

  • 提醒消息是聊天室消息的一种
  • 提醒消息用于会话内的状态提醒,如进入会话时出现的欢迎消息,或者会话命中敏感词后的提示消息等等.
var msg = chatroom.sendTipMsg({
scene: 'p2p',
to: 'account',
tip: 'tip content',
done: sendChatroomMsgDone
});
console.log('正在发送聊天室提醒消息, id=' + msg.idClient);

历史记录

SDK 概述

网易云信 SDK 为 Web 应用提供一个完善的 IM 系统开发框架, 屏蔽掉 IM 系统的复杂的细节, 对外提供较为简洁的 API 接口, 方便第三方应用快速集成 IM 功能。
网易云信还开发了可供开发者们参考,如何使用该SDK的Web Demo:

  • Web源码导读
  • Web(移动端H5)源码导读(不包含音视频)

黑名单

  • 如果一个用户被加入了黑名单, 那么就不再会收到此用户发送的消息
  • 如果一个用户被从黑名单移除, 那么会重新收到此用户发送的消息

标记系统通知为已读状态

  • SDK 在收到系统通知后会更新系统通知未读数, 开发者需要调用此接口来通知 SDK 将某条系统通知标记为已读状态, 标记后会触发onupdatesysmsgunread回调
  • sysMsgs为通过onofflinesysmsgs或者onsysmsg接收到的系统通知或者系统通知数组
nim.markSysMsgRead({
sysMsgs: someSysMsg, // or [someSysMsg]
done: markSysMsgReadDone
});
function markSysMsgReadDone(error, obj) {
console.log(error);
console.log(obj);
console.log('标记系统通知为已读状态' + (!error?'成功':'失败'));
}

消息

从黑名单移除

  • 如果一个用户被从黑名单移除, 那么会重新收到此用户发送的消息
  • SDK内部调用nim.markInBlacklist来完成实际工作
nim.removeFromBlacklist({
account: 'account',
done: removeFromBlacklistDone
});
function removeFromBlacklistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('从黑名单移除' + (!error?'成功':'失败'));
if (!error) {
removeFromBlacklist(obj);
}
}

是否支持数据库

// 通过此 `boolean` 值来查看 SDK 在某个浏览器上是否支持数据库
NIM.support.db

发送聊天室地理位置消息

  • 地理位置消息是聊天室消息的一种, geo参数请参考地理位置对象
var msg = chatroom.sendGeo({
scene: 'p2p',
to: 'account',
geo: {
lng: '116.3833',
lat: '39.9167',
title: 'Beijing'
},
done: sendChatroomMsgDone
});
console.log('正在发送聊天室geo消息, id=' + msg.idClient);

重发消息

如果消息发送失败, 那么可以重发消息

nim.resendMsg({
msg: someMsg,
done: sendMsgDone
})
console.log('正在重发消息', someMsg)

加入静音列表/从静音列表移除

  • 此接口可以完成以下两个功能, 通过参数isAdd来决定实际的功能
  • isAddtrue时, 会将account加入静音列表
  • isAddfalse时, 会将account从静音列表移除
  • 每个功能SDK都提供了相应的独立接口
nim.markInMutelist({
account: 'account',
// `true`表示加入静音列表, `false`表示从静音列表移除
isAdd: 'true',
done: markInMutelistDone
});
function markInMutelistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('将' + obj.account + (isAdd ? '加入静音列表' : '从静音列表移除') + (!error?'成功':'失败'));
if (!error) {
onMarkInMutelist(obj);
}
}

微信小程序

使用前请找技术支持开通功能

真机准备

在微信公众品台 > 设置 > 开发设置 > 服务器配置, 配置域名白名单. 注意一个月内可申请3次修改, 请慎重修改.

设置 IM 需要的域名

  • request合法域名
  • lbs.netease.im
  • wlnimsc0.netease.im
  • socket合法域名
  • wlnimsc0.netease.im
  • uploadFile合法域名
  • nos.netease.com
  • downloadFile合法域名
  • nos.netease.com

设置聊天室需要的域名

  • request合法域名
  • wlnim43.netease.im
  • socket合法域名
  • wlnim43.netease.im
  • uploadFile合法域名
  • nos.netease.com
  • downloadFile合法域名
  • nos.netease.com

申请入群

  • 用户可以申请加入高级群, 目标群的群主和管理员会收到一条类型为'applyTeam'的系统通知, 此类系统通知的from字段的值为申请方的帐号, to字段的值为对应的群ID, 高级群的群主和管理员在收到入群申请后, 可以选择通过或者拒绝入群申请。
  • 如果通过申请, 那么该群的所有群成员会收到一条类型为'passTeamApply'的群通知消息, 此类群通知消息的from字段的值为通过入群申请的人的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群对象, attach有一个字段account的值为申请方的帐号, attach有一个字段members的值为被通过申请的群成员列表。
  • 如果拒绝申请, 那么申请人会收到一条类型为'rejectTeamApply'的系统通知, 此类系统通知的from字段的值为拒绝方的帐号, to字段的值为对应的群ID, attach有一个字段team的值为对应的群。
  • ps: 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容
nim.applyTeam({
teamId: 123,
ps: '请加',
done: applyTeamDone
});
function applyTeamDone(error, obj) {
console.log(error);
console.log(obj);
console.log('申请入群' + (!error?'成功':'失败'));
}

同步机器人列表

  • 机器人列表的同步可以通过设置同步字段syncRobots: true来实现
  • 参见完整的初始化代码
  • 用户也可以手动同步机器人列表
  • 手动同步机器人列表,其本质仍然是一个同步协议,所以会触发用户设置的同步函数 onrobots 的回调。
nim.getRobots();
  • 机器人列表中的机器人对象包含以下字段:
  • account: 机器人账号,对应机器人消息中的robotAccid
  • avatar: 机器人头像
  • createTime: 机器人创建时间
  • intro: 机器人简介
  • nick: 机器人昵称

系统通知对象

系统通知对象有以下字段

  • time: 时间戳
  • type: 系统通知类型, 自定义系统通知无此字段
  • from: 系统通知的来源, 账号或者群ID
  • to: 系统通知的目标, 账号或者群ID
  • idServer: 内建系统通知的 idServer
  • read: 内建系统通知是否已读
  • category: 内建系统通知种类
  • state: 内建系统通知状态
  • error: 内建系统通知的状态为 'error' 时, 此字段包含错误的信息
  • localCustom: 内建系统通知的本地自定义扩展字段
  • 在支持数据库时可以调用更新本地会话来更新此字段, 此字段只会被更新到本地数据库, 不会被更新到服务器上
  • ps: 内建系统通知的附言
  • attach: 内建系统通知的附加信息, 参考系统通知类型来查看不同类型的系统通知对应的附加信息
  • scene: 自定义系系统通知的场景, 参考消息场景
  • content: 自定义系统通知的内容
  • isPushable: 是否需要推送
  • apnsText: 自定义系统通知的apns推送文案, 仅对接收方为iOS设备有效
  • pushPayload: 自定义系统通知的推送属性
  • 推荐使用JSON格式构建, 非JSON格式的话, Web端会正常接收, 但是会被其它端丢弃
  • needPushNick: 是否需要推送昵称
  • sendToOnlineUsersOnly: 自定义系统通知是否只发送给在线用户。
  • true时只发送给在线用户, 适合发送即时通知, 比如正在输入。
  • false时假如目标用户或群不在线, 会在其上线后推送过去。
  • 该参数只对点对点自定义系统通知有效, 对群自定义系统通知无效, 群自定义系统通知只会发给在线的群成员, 不会存离线。
  • cc: 自定义系统通知是否抄送

郑重声明:本文版权归新匍京a奥门-最全网站手机版app官方下载所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。