http://www.ox-holdings.com

避免 babel新匍京娱乐场官方下载: 二次打包引起的错误,网络通话更新

摘要即时通信云微博云信SDK新版宣布,此番发表的版本号为:2.7.0。发表的版本本次发布的版本号为 2.7.0版,更新时间为:二零一六年四月十29日。iOS 2.7.0 更新内容新扩大加更新谈心室音信接口加多更新自个儿的闲聊室成员信息接口增加获取群邀约和群踢人打招呼的恢弘字段增加消息钦定成员推送选项 (强逼推送,特殊推送文案等State of Qatar加多桌面端在线时,音信是还是不是要求推送给手提式有线电话机端的调节按键加多闲谈室通用队列服务(可对直播连麦场景使用卡塔尔(قطر‎互连网通话:协理通话中实时切换录制分辨率网络通话:新扩充摄像发送帧率设置网络通话:几人集会新添错误回调Android 2.7.0 更新内容新增1. 抬高全文字笔迹考验索插件,方今支撑音信全文字笔迹核准索及高亮,扶植分页查询,接口为 LuceneService。 别的,MsgService 中也提供依附SQL Like方式的得以完结。2. 加多SDK 发包频控调整。3. 抬高闲聊室队列服务(针对直播连麦场景使用)。4. 充分钦赐成员强制推送作用(首要针对群):IMMessage#memberPushOption。5. 增添 PC/Web 端在线时可陈设是不是推送的按钮 SettingService。6. 拉长获取群特邀和群踢人打招呼附属类小零件的扩张字段:MemberChangeAttachment#getExtension。7. 增添更新闲聊室消息接口 ChatRoomService#updateRoomInfo ,更新本人闲聊室成员音信接口 ChatRoomService#updateMyRoomRole。8. 添Garden录时同步自个儿所在的全体群的本身群成员资料消息。9. 互联网通话新扩展错误码定义:AVChatResCode。10. 网络通话AVChatStateObserver:新增加录像第一帧绘制布告, onFirstVideoFrameRendered。新添录制帧分辨率改变公告, onVideoFrameResolutionChanged。设备事件通报更换, 仅帮忙本地口音访问设备和录像访谈设备事件。11. 网络通话协助通话前帧率设置。新添帧率参数 AVChatOptionalConfig#videoFrameRate。新扩充帧率定义 AVChatVideoFrameRate。12. 网络通话辅助动态切换清晰度:AVChatParameters#KEY_VIDEO_QUALITY。13. 优化 SDK 登陆同步流程。改动1. 网络通话摄像绘制改动:不再扶植从SDK内部获得画布, AVChatManager#getSurfaceRender。不再提供沟通画布接口, AVChatManager#switchRender。新添外界设置画布接口, AVChatManager#setupVideoRender。新添摄像画布置调节件, AVChatVideoRender。新增添七种录制画布缩放方式, AVChatVideoScalingType。2. 互连网通话装置事件定义 AVChatDevice伊夫nt 去掉画布相关事件。Web SDK 2.7.0 更新内容改变发送消息和发送自定义系统通报的时候, 即便发送方被选拔方参加了黑名单, 那么将会发送失利, 再次回到错误码 7101新增加获取客商名片和得到顾客名片数组能够流传参数sync=true来强制从服务器获取最新的数量谈心室更新聊天室信息更新本人在推推搡搡房间里的新闻图片操作增添了一多种预览图片的操作发送新闻的计划选项扩张了 apns 用于配置特别推送选项, 只在群会话中应用Windows(PC卡塔尔 SDK 2.7.0 更新内容修复优化登陆后同步群成员列表。优化 SDK 在登陆同步的时候,收到在线新闻,时间戳更新难点引致离线音信和出行新闻错过的难点。纠正群消息本地缓存计谋,被踢大概离开群后群新闻仍然缓存在本地(消除缓存再登录就从未了),只是通过标志位分别有效。新扩张点对点音摄像扶持动态调治录制分辨率(在此之前独有多少人的时候扶助)音摄像发起(富含选拔发起)时,允许在开发银行参数中安装帧率增多SDK 发包频控调控。增加闲聊室队列服务(针对直播连麦场景使用)。增加新闻内定成员制抑遏推送选项:kNIMMsgKeyForcePushList, kNIMMsgKeyForcePushContent, kNIMMsgKeyIsForcePush。 nim_talk_def.h增加PC/Web 端在线时可安插是还是不是推送的开关nim_client.h增加得到群邀约和群踢人文告附件的扩充字段,见nim_msglog_def.h kNIMNotificationIdTeamInvite和kNIMNotificationIdTeamKick字段表达。加多更新闲扯室音信接口 和翻新自身闲扯室成员消息接口, nim_chatroom.h语音模块增添枚举本地输入设备接口 nim_audio.h下载地址请从以下官方网站地址下载:

点击查阅原版的书文

摘要即时通信云今日头条云信SDK新版公布,本次公布的版本号为:2.8.0,为宽度更新版本,首要扩大了音信撤回功效。发表的本子本次发布的版本号为 2.8.0版,更新时间为:2014年11月一日。iOS 2.8.0 更新内容新扩张加新闻撤回功效新闻增添来源字段改变校订断网后当即重连闲谈室轻巧失利的标题Android 2.8.0 更新内容新添1. 丰裕音信撤回功能:Msg瑟维斯#revokeMessage, MsgServiceObserve#observeRevokeMessage。2. 加多删减钦点会话的巡礼音讯接口:MsgService#deleteRoamingRecentContact。3. 增加生产总量保存新闻到本地接口:MsgService#saveMessageToLocal 可以安装音信存款和储蓄的时间点。4. 音信中增多获取新闻发送方类型接口:IMMessage#getFromClientType。更换1. 简单全文字笔迹考验索插件包大小。2. 清空会话本地音信记录 MsgService#clearChattingHistory 接口保留 RecentContact 中的 tag, extension, time 属性。Web SDK 2.8.0 更新内容新增添音信撤回Windows(PC卡塔尔(قطر‎ SDK 2.8.0 更新内容修复V2.7.0版本下载文件暂停继续下载的难题。闲谈室接口注册发送消息回执回调接口命名校订:nim_chatroom_reg_send_msg_arc_cb接口改变为nim_chatroom_reg_send_msg_ack_cb。 nim_chatroom.h信息历史插入本地DB一条新闻的接口命名和参数调度:typedef void(*nim_msglog_write_db_only_async)(const char *account_id, NIMSessionType to_type, const char *msg_id, const char *json_msg, const char *json_extension, nim_msglog_res_cb_func cb, const void *user_data); 调整为 typedef void(*nim_msglog_insert_msglog_async)(const char *talk_id, const char *json_msg, bool need_update_session, const char *json_extension, nim_msglog_res_cb_func cb, const void *user_data); 。 nim_msglog.h合併错误码:10414和10450统一为10414,新添错误码kNIMLocalResMsgNosDownloadCheckError。nim_res_code_def.h群成员接纳退群通告后群成员数量不从本土删除,通过标志位标志为无效,具体调用方法请参照他事他说加以考察api文书档案或支付文书档案。修复某种景况下session change通告时session id为空的标题。新增添撤回新闻。 nim_talk.h下载地址请从以下官方网站地址下载:

摘要即时通信云新浪云信SDK新版公布,本次发表的版本号为:2.9.0,为宽度更新版本。发布的版本本次公布的版本号为 2.9.0版,更新时间为:二〇一六年0九月二十六日。iOS 2.9.0 更新内容新添SDK 与 德姆o 周全同盟iOS10网络通话录像访谈画面回调养发送,用于接纳完成美颜等功能音频收集画面回疗养发送,用于选用实现变声等成效录像头切换完毕回调,首要用以摄像回调开启时,管理后置录制头画面包车型大巴镜像翻转改造NIMRTSRequestHandler和NIMRTSResponseHandler扩展参数channelIDAndroid 2.9.0 更新内容新扩张1. 增加闲聊室成员是还是不是被有的时候禁言和有时禁言消亡时间长度字段:ChatRoomMember#isTempMuted, ChatRoomMember#getTempMuteDuration。2. 互连网通话录制访谈数据回调接口 AVChatStateObserver#onVideoFrameFilter, 可用于录像数据的美颜等别的的自定义管理。3. 网络通话语音访谈数据回调接口 AVChatStateObserver#on奥迪(AudiState of QataroFrameFilter, 可用于语音数据的变声等任何的自定义处理。改动1. 闲谈室断线重连时间优化。2. 聊天室发包频控优化。3. MsgService#saveMessageToLocal(IMMessage, boolean, long) 改名为 MsgService#saveMessageToLocalEx(IMMessage, boolean, long卡塔尔国。Windows(PC)SDK 2.9.0 更新内容修复白板通话(不含音录像)的挂断退步难点修复优化新闻附属类小零器件(图片、语音和文件等)的下载优化对高清录制头的支撑优化录像编解码计谋优化音录制通话中本地MP3摄像时声响图像分化台的主题材料新扩充初始化SDK接口新添多个布局项,设置选用图片消息后预下载图片的身分:kPreloadImageQuality, kPreloadImageResize。 nim_client_def.h音录像通话,全局状态回调增添kNIMVideoChatSessionTypeInfoNotify类型,再次来到实时的音录像数据状态下载地址请从以下官方网站地址下载:

摘要即时通信云微博云信于二〇一七年1五月27日发表3.4.0版,本次更新为主要版本的附带更新,实际情况见小说内容。公布的本子这一次发表的版本号为 3.5.0版,更新时间为:前年0一月11日。iOS 更新内容新增加SDK 现在以.framework情势提供。聊天室历史音信拉取接口协理逆向拉取。互连网通话新扩展通话录音效率, 能够录像通话中存有加入者的响动并保留为 aac 或 wav 文件新扩张alwaysKeepCalling参数, 用于安装被叫离线时是还是不是依然需求持续呼叫新增摄像对方音摄像功效,并保留为 MP4文件新增本地录像截图,并新扩张接口snapshotFromLocalVideoCompletion:点对点录制协助过渡前预览更动互联网通话NIMNetCallType变为NIMNetCallMediaType, 涉及点对点通话的主叫发起通话、被叫收到呼叫和切换互联网通话类型多个接口中的通话类型参数,以及参预两人集会的音录像类型参数MP3录像录制接口的联结调度,调解后本地录像与对端录像使用相符套接口开端录制接口从startLocalRecording:videoBitrate:改换为startRecording:videoBitrate:uid:,新添了客户userId 参数截至摄像接口从stopLocalRecording:更动为stopRecordingWithUid:,新添了客商userId 参数最早回调从onLocalRecordStarted:fileUTucsonL:退换为onRecordStarted:fileUHavalL:uid:,新扩充了客户userId 参数错误回调从onLocalRecordError:callID:改变为onRecordError:callID:uid:,新添了顾客userId 参数截止回调从onLocalRecordStopped:fileUMuranoL:更动为onRecordStopped:fileU本田CR-VL:uid:,新增添了客商userId 参数Android 更新内容新扩充1. 谈心室历史记录拉取接口: pullMessageHistoryEx,援协助调查询方向准时间点向前依然向后。2. 音录像通话持续呼叫:若被叫方不在线,主叫方对其持续开展呼叫,被叫方会收到音信推送。3. 网络通话更新:复制- 新扩展发送调控命令接口:AVChatManager#sendControlCommand- 新扩充外界自定义录制绘制:AVChatExternalVideoRender, AVChatI420Frame- 扶植发起通话后旋即预览改变1. 互连网通话与本土系统来电人机联作管理优化,从音录像SDK移到德姆o中举行拍卖,便于第三方上层管理类别电话和互连网通话的交互作用:复制- 删除接口AVChatManager#observeAutoHangUpForLocalPhone- 增添接口AVChatManager#isCurrentChatValid2. 互联网通话录像闲聊扩展预览功用:复制- 删除接口AVChatManager#setupVideoRender- 增添接口AVChatManager#setupLocalVideoRender- 增添接口AVChatManager#setupRemoteVideoRender3. 网络通话录像帧和音频帧数据管理接口改动:复制- 重返类型从int变为boolean的接口AVChatStateObserver#onVideoFrameFilter- 重返类型从int变为boolean的接口AVChatStateObserver#on奥迪(Audi卡塔尔国oFrameFilter- 纠正视频数据类AVChatVideoFrame- 更改语音数据类AVChat奥迪(Audi卡塔尔(قطر‎oFrame- AVChatImageFormat更改为AVChatVideoFrame内部类4. 互联网通话音摄像摄像接口改动:复制- 删除接口AVChatManager#startLocalRecord- 删除接口AVChatManager#stopLocalRecord- 删除接口AVChatManager#isLocalRecording- 增加接口AVChatManager#startAVRecording- 增添接口AVChatManager#stopAVRecording- 增多接口AVChatManager#start奥迪oRecording- 加多接口AVChatManager#stop奥迪(Audi卡塔尔(قطر‎oRecording5. 网络通话进程中的状态变化监听接口退换:复制- 删除接口AVChatStateObserver#onLocalRecordEnd- 增添接口AVChatStateObserver#onAVRecordingCompletion- 增添接口AVChatStateObserver#on奥迪(Audi卡塔尔国oRecordingCompletion- 增多接口AVChatStateObserver#onLowStorageSpaceWarning6. 奥迪oRecorder 高清语音录音组件异步化,使用子线程最早、结束录音,UIKit 同期改良适配。7. 文告栏样式更动:复制- 展开样式的布告栏点击跳转纠正为步向对应关系人的闲谈分界面- 折叠样式的通告栏在多联系人时将运用 icon 设置为布告栏大图8. SDK 心跳机制优化,减少弱网情形下一连失效时上层的感知时间。9. LBS 机制优化,防止使用在后台受到互连网范围时耗尽可用的 Link 地址。Windows(PCState of QatarSDK 更新内容新扩展音录制通话时方可录像aac的混音音频文件(本人和对方全部人的混音),同期经过音摄像状态回调接口重返录像情况音视频通话和白板通话特邀时扩大三个keepcalling的效益,默许张开闲谈室历史新闻拉取接口今后支撑正面与反面向一齐拉,nim_chatroom_get_msg_history_online_async第三个参数增添条件配置, nim_chatroom_def.h #分收获历史新闻条件Keys新添代理测量试验接口, nim_global.h修复优化Mike风和摄像头的设施遍历接口,防止错误的设施产生接口调用崩溃修复音摄像互连网探测接口调用退步后产生的cpu高占用率的难点优化白板数据接口在高频率调用时的崩溃难题优化迈克风自动调治作用,会较明显的升高Mike风音量过小的难题修复HTTP模块发送大文件轻易超时的主题素材优化地面数据悠久化方案修复近来举报的崩溃问题Web SDK 更新内容新增添闲聊室获取历史新闻记录扶植双向查询下载地址请从以下官方网站地址下载:

Web SDK 开拓手册

SDK 概述

新浪云信 SDK 为 Web 应用提供一个周密的 IM 系统开荒框架, 屏蔽掉 IM 系统的复杂性的内情, 对外提供比较轻巧的 API 接口, 方便第三方使用神速集成 IM 作用。
腾讯网云信还支付了可供开拓者们参照他事他说加以考查,怎么着使用该SDK的Web 德姆o:

  • Web源码导读
  • Web(移动端H5State of Qatar源码导读(不含有音录制卡塔尔国

支付希图

下载并引进 SDK 文件

  • 从云信官方网址下载 Web SDK 并解压
  • 目录构造介绍
  • 若是要在浏览器里面使用 SDK, 相应的 JS 文件都在 js 目录下.
  • 万一要在Wechat小程序里面使用 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) 来加载实时音录制插件

打包

假定开辟者采用 webpack/babel 来打包, 那么请使用 exclude 将 SDK 文件肃清, 制止 babel 一次打包引起的谬误

浏览器宽容性

云信 Web SDK (不分包实时音录制State of Qatar宽容到 IE8

  • IE8/IE9 必要将品种安插在 HTTPS 情况下技巧延续到云信服务器, 此外高端浏览器能够在 HTTP 可能 HTTPS 情况下延续到云信服务器

数据库宽容性

在支撑数据库的浏览器上 SDK 会将数据缓存到数据库中, 后续同步都是增量更新, 加快起头化速度

是还是不是扶助数据库

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

不选用数据库

只要开辟者不想接收数据库, 那么能够安装伊始化参数dbfalse来剥夺数据库

var nim = NIM.getInstance({
db: false
});

Wechat小程序

利用前请找手艺帮忙开通功用

require

请查阅支付思谋来下载并引进SDK 文件

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

接口调用

Wechat小程序的绝大多数接口跟浏览器情状完全一致, 如有分化会附加表达, 请查阅此外章节

真机思考

在Wechat公众品台 > 设置 > 开垦设置 > 服务器配置, 配置域名白名单. 注意7个月内可报名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

借助表达

  • SDK 使用一雨后春笋开源库来越来越好的实现职业, 全体库均挂在 NIM 上边
  • SDK 使用 es5-shim 来让低版本浏览器宽容 ES5 的一些办法
  • SDK 使用 platform.js 来检验浏览器平台, 通过 NIM.platform 来获取此库的引用
  • SDK 使用 socket.io-client 0.9 来建立 Socket 连接, 通过 NIM.iowindow.io 来获取此库的引用

初始化 SDK

请查阅支出计划来下载并引入SDK 文件

亲自去做代码

  • 此接口为单例格局, 对于同二个账号, 恒久再次回到同一份实例, 即独有首先次调用会初步化一个实例
  • 波澜起伏调用此接口会一直回到伊始化过的实例, 同不经常间也会调用接口更新配备纠正传入的布署
  • 大浪涛沙调用此接口时, 假诺连接已断开, 会自动建构连接
  • 当发生掉线时,SDK会自动举办重连
  • 开采者在收受onconnect回调之后表示链接已经济建设立, 那时 SDK 会起头联手数据, 随后在收到onsyncdone回调之后表示 SDK 达成了数额同步专业, 那时候开辟者能够张开渲染UI等操作了。
  • 这里的data表示数量, 在前面章节的亲自去做代码中会多次选用那些指标
  • 这里的nim代表 SDK, 在前边章节的言传身教代码中会数14回利用这一个对象.
  • 此处的参数并不是负有的开头化参数, 请查阅别的章节的初叶化参数
  • 初始化SDK
  • 多端登陆起头化参数
  • 顾客关系开首化参数
  • 老铁关系伊始化参数
  • 客商名片初阶化参数
  • 群组初叶化参数
  • 会话初阶化参数
  • 新闻伊始化参数
  • 系统通报开始化参数
  • 一齐到位
  • 总体的初步化代码
var data = {};
// 注意这里, 引入的 SDK 文件不一样的话, 你可能需要使用 SDK.NIM.getInstance 来调用接口
var nim = NIM.getInstance({
// debug: true,
appKey: 'appKey',
account: 'account',
token: 'token',
onconnect: onConnect,
onwillreconnect: onWillReconnect,
ondisconnect: onDisconnect,
onerror: onError
});
function onConnect() {
console.log('连接成功');
}
function onWillReconnect(obj) {
// 此时说明 SDK 已经断开连接, 请开发者在界面上提示用户连接已断开, 而且正在重新建立连接
console.log('即将重连');
console.log(obj.retryCount);
console.log(obj.duration);
}
function onDisconnect(error) {
// 此时说明 SDK 处于断开状态, 开发者此时应该根据错误码提示相应的错误信息, 并且跳转到登录页面
console.log('丢失连接');
console.log(error);
if (error) {
switch (error.code) {
// 账号或者密码错误, 请跳转到登录页面并提示错误
case 302:
break;
// 重复登录, 已经在其它端登录了, 请跳转到登录页面并提示错误
case 417:
break;
// 被踢, 请提示错误后跳转到登录页面
case 'kicked':
break;
default:
break;
}
}
}
function onError(error) {
console.log(error);
}

参数解释

  • debug: 是不是开启日志, 开辟者能够敞开日志, 那样 SDK 会将重视操作的音信打字与印刷到调整台上, 便于调节和测验
  • appKey: 在云信管理后台查看应用的 appKey
  • account: 帐号, 应用内独一
  • token: 帐号的 token, 用于建立连接
  • transports: 用于创立长连接的合计数组,可不填,默以为['websocket', 'xhr-polling']
  • 暗中认可状态 sdk优用websocket连接,如若浏览器不帮忙websocket,则应用xhr-polling
  • 开荒者可手动设置连接及各样,可支撑选项包罗websocket、xhr-polling、flashsocket
  • 示例如: transports: ['websocket'、'xhr-polling'、'flashsocket']
  • onconnect: 连接创设后的回调, 会传入贰个指标, 满含登入的音讯, 有以下字段
  • lastLoginDeviceId: 上次登入的装置的装置号
  • connectionId: 这次登入的接连号
  • ip: 客户端IP
  • port: 顾客端端口
  • country: 此番登陆的国度
  • onwillreconnect: 将要重连的回调
  • 那个时候验证 SDK 已经断开连接, 请开辟者在分界面上提示客户连接已断开, 何况正在重新树立连接
  • 此回调会抽出多少个指标, 包蕴额外的新闻, 有以下字段
  • duration: 间隔下一次重连的时刻
  • retryCount: 重连尝试的次数
  • ondisconnect: 断开连接后的回调
  • 那个时候表达 SDK 处于断开状态, 开荒者那个时候应有凭仗错误码提示相应的错误音信, 而且跳转到登陆页面
  • 此回调会吸收接纳叁个目的, 包括错误的音讯, 有以下字段
  • code: 出错时的错误码, 可能为空
  • 302: 账号可能密码错误, 请跳转到登入页面并提醒错误
  • 417: 重复登陆, 已经在其余端登入了, 请跳转到登入页面并提醒错误
  • 'kicked': 被踢
  • onerror: 爆发错误的回调, 会传入错误对象

手拉手到位

SDK 在一起完毕现在会公告开荒者, 开垦者可以在那回调之后再起始化本人的分界面, 以至进行其余操作, 同步的多寡富含下边章节中的

  • 黑名单, 对应回调 onblacklist, 请参考客户关系托管内部的开端化参数
  • 静音列表, 对应回调 onmutelist, 请参考客商关系托管里头的开始化参数
  • 亲密的朋友, 对应回调 onfriends, 请参考知音关系托管内部的开始化参数
  • 本身的名片, 对应回调 onmyinfo, 请参考顾客名片托管里面包车型客车初步化参数
  • 基友的名片, 对应回调 onusers, 请参考顾客名片托管内部的早先化参数
  • 群, 对应回调 onteams, 请参考群组中间的伊始化参数
  • 对话, 对应回调 onsessions, 请参考会话内部的初步化参数
  • 出境游音信, 对应回调 onroamingmsgs, 请参考消息其间的早先化参数
  • 离线音信, 对应回调 onofflinemsgs, 请参考消息当中的早先化参数
  • 离线系统通报, 对应回调 onofflinesysmsgs, 请参考系统通报内部的带头化参数
  • 离线自定义系统通报, 对应回调 onofflinecustomsysmsgs, 请参考系统通报里面包车型大巴开头化参数

示范代码

  • 此间的参数并非富有的开头化参数, 请查阅初始化 SDK, 以至此外章节的开始化参数
  • 初始化SDK
  • 多端登陆初叶化参数
  • 客商关系最初化参数
  • 亲密的朋友关系早先化参数
  • 客户名片开首化参数
  • 群组最早化参数
  • 会话起先化参数
  • 音信发轫化参数
  • 系统通报起头化参数
  • 联机到位
  • 完整的初叶化代码
var nim = NIM.getInstance({
onsyncdone: onSyncDone,
});
function onSyncDone() {
console.log('同步完成');
}

一齐按钮

SDK 暗许会同步全数的数量, 开采者能够透过按钮来抉择分化台有些数据, 那一个开关都以伊始化参数

  • syncRelations, 是不是同步黑名单和静音列表, 暗中认可true. 如果传false就收不到黑名单和静音列表, 即不会收下onblacklist回调和onmutelist回调, 开辟者后续能够调用取得黑名单和静音列表来得到黑名单和静音列表。
  • syncFriends, 是还是不是同步基友列表, 默许true. 如果传false就收不到onfriends回调, 开垦者后续能够调用获得基友列表来赢得基友列表。
  • syncFriendUsers, 是或不是同步老铁对应的顾客名片列表, 暗中同意true, 如果传false就收不到onusers回调.
  • syncRobots, 是还是不是同步机器人列表,默许false, 如果传false就收不到onrobots回调。
  • syncTeams, 是还是不是同步群列表, 暗中认可true. 如果传false就收不到群列表, 即不会吸收接纳onteams回调, 开采者后续能够调用得到群列表来得到群列表.
  • syncExtraTeamInfo, 是不是同步额外的群音讯, 默许true会同步额外的群音讯, 方今包蕴
  • 时下报到顾客是不是张开有个别群的信息提醒 (SDK 只是存款和储蓄了此音讯, 具体用此信息来做怎么样事情完全由开辟者调控卡塔尔国
  • 调用接口改过本身的群属性来关闭/开启有个别群的音讯提醒
  • 调用接口是不是供给群音讯布告来询问是还是不是须要群音讯通告
  • syncTeamMembers, 是或不是同步群成员, 默许true. 只有在syncTeams=true的时候才起效用, 假若传false就不会同步群成员, 即不会抽取onteammembersonsyncteammembersdone回调, 开荒者后续能够调用赢得群成员来获取群成员.
  • syncRoamingMsgs, 是或不是同步漫游音讯, 暗许true. 如果传false就收不到漫游新闻, 即不会摄取onroamingmsgs回调.
  • syncMsgReceipts, 是还是不是同步已读回执时间戳, 暗中同意true. 如果传false就收不到已读回执时间戳.

自己要作为典范服从规则代码

  • 此处的参数并不是装有的早先化参数, 请查阅初始化 SDK, 以致别的章节的发轫化参数
  • 初始化SDK
  • 多端登入起初化参数
  • 客户关系开端化参数
  • 知音关系开始化参数
  • 顾客著名影片起头化参数
  • 群组早先化参数
  • 会话领头化参数
  • 音讯开头化参数
  • 系统通报开端化参数
  • 协办达成
  • 完全的伊始化代码
var nim = NIM.getInstance({
syncRelations: false
});

总体的起头化代码

  • 请查阅其余章节的开始化参数
  • 初始化SDK
  • 多端登入开头化参数
  • 客户关系最早化参数
  • 知音关系伊始化参数
  • 客户名片初叶化参数
  • 群组初叶化参数
  • 会话开端化参数
  • 音讯起头化参数
  • 系统通报早先化参数
  • 四头落成
  • 总体的初阶化代码
var data = {};
var nim = NIM.getInstance({
// 初始化SDK
// debug: true
appKey: 'appKey',
account: 'account',
token: 'token',
onconnect: onConnect,
onerror: onError,
onwillreconnect: onWillReconnect,
ondisconnect: onDisconnect,
// 多端登录
onloginportschange: onLoginPortsChange,
// 用户关系
onblacklist: onBlacklist,
onsyncmarkinblacklist: onMarkInBlacklist,
onmutelist: onMutelist,
onsyncmarkinmutelist: onMarkInMutelist,
// 好友关系
onfriends: onFriends,
onsyncfriendaction: onSyncFriendAction,
// 用户名片
onmyinfo: onMyInfo,
onupdatemyinfo: onUpdateMyInfo,
onusers: onUsers,
onupdateuser: onUpdateUser,
onrobots: onRobots,
// 群组
onteams: onTeams,
onsynccreateteam: onCreateTeam,
onteammembers: onTeamMembers,
onsyncteammembersdone: onSyncTeamMembersDone,
onupdateteammember: onUpdateTeamMember,
// 会话
onsessions: onSessions,
onupdatesession: onUpdateSession,
// 消息
onroamingmsgs: onRoamingMsgs,
onofflinemsgs: onOfflineMsgs,
onmsg: onMsg,
// 系统通知
onofflinesysmsgs: onOfflineSysMsgs,
onsysmsg: onSysMsg,
onupdatesysmsg: onUpdateSysMsg,
onsysmsgunread: onSysMsgUnread,
onupdatesysmsgunread: onUpdateSysMsgUnread,
onofflinecustomsysmsgs: onOfflineCustomSysMsgs,
oncustomsysmsg: onCustomSysMsg,
// 同步完成
onsyncdone: onSyncDone
});

function onConnect() {
console.log('连接成功');
}
function onWillReconnect(obj) {
// 此时说明 `SDK` 已经断开连接, 请开发者在界面上提示用户连接已断开, 而且正在重新建立连接
console.log('即将重连');
console.log(obj.retryCount);
console.log(obj.duration);
}
function onDisconnect(error) {
// 此时说明 `SDK` 处于断开状态, 开发者此时应该根据错误码提示相应的错误信息, 并且跳转到登录页面
console.log('丢失连接');
console.log(error);
if (error) {
switch (error.code) {
// 账号或者密码错误, 请跳转到登录页面并提示错误
case 302:
break;
// 被踢, 请提示错误后跳转到登录页面
case 'kicked':
break;
default:
break;
}
}
}
function onError(error) {
console.log(error);
}

function onLoginPortsChange(loginPorts) {
console.log('当前登录帐号在其它端的状态发生改变了', loginPorts);
}

function onBlacklist(blacklist) {
console.log('收到黑名单', blacklist);
data.blacklist = nim.mergeRelations(data.blacklist, blacklist);
data.blacklist = nim.cutRelations(data.blacklist, blacklist.invalid);
refreshBlacklistUI();
}
function onMarkInBlacklist(obj) {
console.log(obj);
console.log(obj.account + '被你在其它端' + (obj.isAdd ? '加入' : '移除') + '黑名单');
if (obj.isAdd) {
addToBlacklist(obj);
} else {
removeFromBlacklist(obj);
}
}
function addToBlacklist(obj) {
data.blacklist = nim.mergeRelations(data.blacklist, obj.record);
refreshBlacklistUI();
}
function removeFromBlacklist(obj) {
data.blacklist = nim.cutRelations(data.blacklist, obj.record);
refreshBlacklistUI();
}
function refreshBlacklistUI() {
// 刷新界面
}
function onMutelist(mutelist) {
console.log('收到静音列表', mutelist);
data.mutelist = nim.mergeRelations(data.mutelist, mutelist);
data.mutelist = nim.cutRelations(data.mutelist, mutelist.invalid);
refreshMutelistUI();
}
function onMarkInMutelist(obj) {
console.log(obj);
console.log(obj.account + '被你' + (obj.isAdd ? '加入' : '移除') + '静音列表');
if (obj.isAdd) {
addToMutelist(obj);
} else {
removeFromMutelist(obj);
}
}
function addToMutelist(obj) {
data.mutelist = nim.mergeRelations(data.mutelist, obj.record);
refreshMutelistUI();
}
function removeFromMutelist(obj) {
data.mutelist = nim.cutRelations(data.mutelist, obj.record);
refreshMutelistUI();
}
function refreshMutelistUI() {
// 刷新界面
}

function onFriends(friends) {
console.log('收到好友列表', friends);
data.friends = nim.mergeFriends(data.friends, friends);
data.friends = nim.cutFriends(data.friends, friends.invalid);
refreshFriendsUI();
}
function onSyncFriendAction(obj) {
console.log(obj);
switch (obj.type) {
case 'addFriend':
console.log('你在其它端直接加了一个好友' + obj.account + ', 附言' + obj.ps);
onAddFriend(obj.friend);
break;
case 'applyFriend':
console.log('你在其它端申请加了一个好友' + obj.account + ', 附言' + obj.ps);
break;
case 'passFriendApply':
console.log('你在其它端通过了一个好友申请' + obj.account + ', 附言' + obj.ps);
onAddFriend(obj.friend);
break;
case 'rejectFriendApply':
console.log('你在其它端拒绝了一个好友申请' + obj.account + ', 附言' + obj.ps);
break;
case 'deleteFriend':
console.log('你在其它端删了一个好友' + obj.account);
onDeleteFriend(obj.account);
break;
case 'updateFriend':
console.log('你在其它端更新了一个好友', obj.friend);
onUpdateFriend(obj.friend);
break;
}
}
function onAddFriend(friend) {
data.friends = nim.mergeFriends(data.friends, friend);
refreshFriendsUI();
}
function onDeleteFriend(account) {
data.friends = nim.cutFriendsByAccounts(data.friends, account);
refreshFriendsUI();
}
function onUpdateFriend(friend) {
data.friends = nim.mergeFriends(data.friends, friend);
refreshFriendsUI();
}
function refreshFriendsUI() {
// 刷新界面
}

function onMyInfo(user) {
console.log('收到我的名片', user);
data.myInfo = user;
updateMyInfoUI();
}
function onUpdateMyInfo(user) {
console.log('我的名片更新了', user);
data.myInfo = NIM.util.merge(data.myInfo, user);
updateMyInfoUI();
}
function updateMyInfoUI() {
// 刷新界面
}
function onUsers(users) {
console.log('收到用户名片列表', users);
data.users = nim.mergeUsers(data.users, users);
}
function onUpdateUser(user) {
console.log('用户名片更新了', user);
data.users = nim.mergeUsers(data.users, user);
}
function onRobots (robots) {
console.log('收到机器人列表', robots);
data.robots = robots;
}
function onTeams(teams) {
console.log('群列表', teams);
data.teams = nim.mergeTeams(data.teams, teams);
onInvalidTeams(teams.invalid);
}
function onInvalidTeams(teams) {
data.teams = nim.cutTeams(data.teams, teams);
data.invalidTeams = nim.mergeTeams(data.invalidTeams, teams);
refreshTeamsUI();
}
function onCreateTeam(team) {
console.log('你创建了一个群', team);
data.teams = nim.mergeTeams(data.teams, team);
refreshTeamsUI();
onTeamMembers({
teamId: team.teamId,
members: owner
});
}
function refreshTeamsUI() {
// 刷新界面
}
function onTeamMembers(teamId, members) {
console.log('群id', teamId, '群成员', members);
var teamId = obj.teamId;
var members = obj.members;
data.teamMembers = data.teamMembers || {};
data.teamMembers[teamId] = nim.mergeTeamMembers(data.teamMembers[teamId], members);
data.teamMembers[teamId] = nim.cutTeamMembers(data.teamMembers[teamId], members.invalid);
refreshTeamMembersUI();
}
function onSyncTeamMembersDone() {
console.log('同步群列表完成');
}
function onUpdateTeamMember(teamMember) {
console.log('群成员信息更新了', teamMember);
onTeamMembers({
teamId: teamMember.teamId,
members: teamMember
});
}
function refreshTeamMembersUI() {
// 刷新界面
}

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() {
// 刷新界面
}

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);
}
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 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);
}

function onSyncDone() {
console.log('同步完成');
}

报到与登出

登出 IM

  • 初始化 SDK然后, SDK 会自动登陆
  • 在收到onconnect回调后方可调用nim.disconnect();来登出 SDK
  • 登出 SDK 后得以调用nim.connect();来再度登录 SDK

切换 IM

要是供给切换 IM, 操作步骤如下

  • 调用登出IM来登出IM
  • 调用初始化SDK来起首化新的 IM

更新 IM 配置

SDK 设计为单例方式, 假使必要更新当前 IM 的安顿, 那么能够调用此接口, 参数列表和格式跟NIM.getInstance保持一致, 以更新 token 为例

// 断开 IM
nim.disconnect();
// 更新 token
nim.setOptions({
token: 'newToken'
});
// 重新连接
nim.connect();

多端登入

云信扶植多端同一时候登陆, 即客户能够同不平日间在移动端和网页端登入同一账号

开始化参数

  • 这里的参数并不是怀有的伊始化参数, 请查阅初始化 SDK, 以至任何章节的开首化参数
  • 初始化SDK
  • 多端登陆初步化参数
  • 顾客关系开始化参数
  • 知音关系开头化参数
  • 顾客名片伊始化参数
  • 群组开始化参数
  • 会话开头化参数
  • 音讯早先化参数
  • 系统通报开端化参数
  • 协同完毕
  • 完全的最初化代码

示范代码

var nim = NIM.getInstance({
onloginportschange: onLoginPortsChange
});
function onLoginPortsChange(loginPorts) {
console.log('当前登录帐号在其它端的状态发生改变了', loginPorts);
}

参数解释

  • onloginportschange: 多端登陆状态变化的回调, 会收到登录端列表, 以下境况会收下此回调
  • 签届时其余端在线
  • 登录后别的端上线只怕下线

登录端

登陆端代表报到在某些设备上的有关音信, 犹如下字段

  • type: 登录的设备项目
  • os: 登入设备的操作系统
  • mac: 登入设备的 mac 地址
  • deviceId: 登入设备ID, uuid
  • account: 登入的帐号
  • connectionId: 登入设备分配的再而三号
  • ip: 登陆的服务器 IP
  • time: 登入时间
  • online: 是不是在线

设备项目

当前云信扶助的登入端有以下二种档次

  • 'Android' (安卓)
  • 'iOS' (苹果)
  • 'PC' (桌面)
  • 'Web' (浏览器)
  • 'Mac' (桌面)

踢此外端

示范代码

nim.kick({
deviceIds: ['deviceId1'],
done: onKick
});
function onKick(error, obj) {
console.log('踢其它端' + (!error?'成功':'失败'));
console.log(error);
console.log(obj);
}

参数解释

  • 其余登陆端的装置号能够在onloginportschange回调里获取, 仿照效法登陆端对象

客户关系托管

SDK 提供了客商关系托管, 包涵黑名单和静音列表

黑名单

  • 假诺二个用户被投入了黑名单, 那么就不再会收下此客户发送的新闻
  • 假设三个客商被从黑名单移除, 那么会重新摄取此客商发送的音讯

静音列表

  • SDK只承当掩护静音列表, 具体遵照静音列表要拓宽的操作由开辟者决定

初叶化参数

  • 此间的参数实际不是负有的开始化参数, 请查阅初始化 SDK, 以致其余章节的初叶化参数
  • 初始化SDK
  • 多端登入初叶化参数
  • 客商关系先导化参数
  • 知音关系开头化参数
  • 客商名片起头化参数
  • 群组初步化参数
  • 会话开头化参数
  • 音信初叶化参数
  • 系统通报起首化参数
  • 一道完结
  • 一体化的开头化代码

示范代码

var nim = NIM.getInstance({
onblacklist: onBlacklist,
onsyncmarkinblacklist: onMarkInBlacklist,
onmutelist: onMutelist,
onsyncmarkinmutelist: onMarkInMutelist
});
function onBlacklist(blacklist) {
console.log('收到黑名单', blacklist);
data.blacklist = nim.mergeRelations(data.blacklist, blacklist);
data.blacklist = nim.cutRelations(data.blacklist, blacklist.invalid);
refreshBlacklistUI();
}
function onMarkInBlacklist(obj) {
console.log(obj);
console.log(obj.account + '被你' + (obj.isAdd ? '加入' : '移除') + '黑名单');
if (obj.isAdd) {
addToBlacklist(obj);
} else {
removeFromBlacklist(obj);
}
}
function addToBlacklist(obj) {
data.blacklist = nim.mergeRelations(data.blacklist, obj.record);
refreshBlacklistUI();
}
function removeFromBlacklist(obj) {
data.blacklist = nim.cutRelations(data.blacklist, obj.record);
refreshBlacklistUI();
}
function refreshBlacklistUI() {
// 刷新界面
}
function onMutelist(mutelist) {
console.log('收到静音列表', mutelist);
data.mutelist = nim.mergeRelations(data.mutelist, mutelist);
data.mutelist = nim.cutRelations(data.mutelist, mutelist.invalid);
refreshMutelistUI();
}
function onMarkInMutelist(obj) {
console.log(obj);
console.log(obj.account + '被你' + (obj.isAdd ? '加入' : '移除') + '静音列表');
if (obj.isAdd) {
addToMutelist(obj);
} else {
removeFromMutelist(obj);
}
}
function addToMutelist(obj) {
data.mutelist = nim.mergeRelations(data.mutelist, obj.record);
refreshMutelistUI();
}
function removeFromMutelist(obj) {
data.mutelist = nim.cutRelations(data.mutelist, obj.record);
refreshMutelistUI();
}
function refreshMutelistUI() {
// 刷新界面
}

参数解释

  • onblacklist: 同步黑名单的回调, 会传入黑名单列表blacklist
  • blacklist的属性invalid含有被去除的黑名单列表
  • 此回调是增量回调, 能够调用nim.mergeRelations和nim.cutRelations来合併数据
  • onsyncmarkinblacklist: 当前报到客户在任何端参预黑名单/从黑名单移除后的回调, 会传入三个参数, 富含多个字段
  • account: 要参预黑名单/从黑名单移除的账号
  • isAdd: true代表参加黑名单, false表示从黑名单移除
  • reocrd, 拼装好的对象
  • onmutelist: 同步静音列表的回调, 会传入静音列表mutelist
  • mutelist的属性invalid含蓄被删去的静音列表
  • 此回调是增量回调, 能够调用nim.mergeRelations和nim.cutRelations来统一数据
  • onsyncmarkinmutelist: 当前登陆顾客在任何端参与静音列表/从静音列表移除后的回调, 会传入叁个参数, 富含三个字段
  • account: 要参加静音列表/从静音列表移除的账号
  • isAdd: true表示参预静音列表, false意味着从静音列表移除
  • reocrd, 拼装好的指标

插手黑名单/从黑名单移除

  • 此接口能够达成以下三个成效, 通过参数isAdd来调节实际上的服从
  • isAddtrue时, 会将account进入黑名单
  • 若是三个顾客被出席了黑名单, 那么就不再会收到此客户发送的音讯
  • isAddfalse时, 会将account从黑名单移除
  • 假定二个客户被从黑名单移除, 那么会另行吸取此客户发送的音讯
  • 各种作用SDK都提供了相应的独自接口
nim.markInBlacklist({
account: 'account',
// `true`表示加入黑名单, `false`表示从黑名单移除
isAdd: true,
done: markInBlacklistDone
});
function markInBlacklistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('将' + obj.account + (isAdd ? '加入黑名单' : '从黑名单移除') + (!error?'成功':'失败'));
if (!error) {
onMarkInBlacklist(obj);
}
}

走入黑名单

  • 若果二个顾客被投入了黑名单, 那么就不再会摄取此客户发送的新闻
  • SDK内部调用nim.markInBlacklist来完成实际职业
nim.addToBlacklist({
account: 'account',
done: addToBlacklistDone
});
function addToBlacklistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('加入黑名单' + (!error?'成功':'失败'));
if (!error) {
addToBlacklist(obj);
}
}

从黑名单移除

  • 假设贰个客商被从黑名单移除, 那么会另行吸取此客户发送的音讯
  • 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);
}
}

参与静音列表/从静音列表移除

  • 此接口能够产生以下多个效果与利益, 通过参数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);
}
}

插足静音列表

  • 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);
}
}

从静音列表移除

  • SDK只承受掩护静音列表, 具体要凭仗静音列表举行的操作由开辟者决定
  • SDK内部调用nim.markInMutelist来实现实际工作
nim.removeFromMutelist({
account: 'account',
done: removeFromMutelistDone
});
function removeFromMutelistDone(error, obj) {
console.log(error);
console.log(obj);
console.log('从静音列表移除' + (!error?'成功':'失败'));
if (!error) {
removeFromMutelist(obj);
}
}

取得黑名单和静音列表

  • 只要开辟者在初始化SDK的时候设置了syncRelationsfalse, 那么就收不到onblacklistonmutelist回调, 能够调用此接口来得到黑名单和静音列表。
nim.getRelations({
done: getRelationsDone
});
function getRelationsDone(error, obj) {
console.log('获取静音列表' + (!error?'成功':'失败'), error, obj);
if (!error) {
onBlacklist(obj.blacklist);
onMutelist(obj.mutelist);
}
}

基友关系托管

  • SDK 提供老铁关系托管

老铁关系起头化参数

  • 那边的参数并不是装有的最早化参数, 请查阅初始化 SDK, 以至其余章节的伊始化参数
  • 初始化SDK
  • 多端登陆领头化参数
  • 顾客关系开头化参数
  • 老铁关系初叶化参数
  • 顾客著名影片初始化参数
  • 群组带头化参数
  • 会话开始化参数
  • 新闻早先化参数
  • 系统通报伊始化参数
  • 一路到位
  • 全部的开首化代码
  • 请参考拍卖系统通报中间的跟基友相关的逻辑

自己要作为范例遵守规则代码

var nim = NIM.getInstance({
onfriends: onFriends,
onsyncfriendaction: onSyncFriendAction
});
function onFriends(friends) {
console.log('收到好友列表', friends);
data.friends = nim.mergeFriends(data.friends, friends);
data.friends = nim.cutFriends(data.friends, friends.invalid);
refreshFriendsUI();
}
function onSyncFriendAction(obj) {
console.log(obj);
switch (obj.type) {
case 'addFriend':
console.log('你在其它端直接加了一个好友' + obj.account + ', 附言' + obj.ps);
onAddFriend(obj.friend);
break;
case 'applyFriend':
console.log('你在其它端申请加了一个好友' + obj.account + ', 附言' + obj.ps);
break;
case 'passFriendApply':
console.log('你在其它端通过了一个好友申请' + obj.account + ', 附言' + obj.ps);
onAddFriend(obj.friend);
break;
case 'rejectFriendApply':
console.log('你在其它端拒绝了一个好友申请' + obj.account + ', 附言' + obj.ps);
break;
case 'deleteFriend':
console.log('你在其它端删了一个好友' + obj.account);
onDeleteFriend(obj.account);
break;
case 'updateFriend':
console.log('你在其它端更新了一个好友', obj.friend);
onUpdateFriend(obj.friend);
break;
}
}
function onAddFriend(friend) {
data.friends = nim.mergeFriends(data.friends, friend);
refreshFriendsUI();
}
function onDeleteFriend(account) {
data.friends = nim.cutFriendsByAccounts(data.friends, account);
refreshFriendsUI();
}
function onUpdateFriend(friend) {
data.friends = nim.mergeFriends(data.friends, friend);
refreshFriendsUI();
}
function refreshFriendsUI() {
// 刷新界面
}

参数解释

  • onfriends, 同步老铁列表的回调, 会传入好友列表friends
  • friends的质量invalid包蕴被删去的忘年交列表
  • 此回调是增量回调, 可以调用nim.mergeFriends和nim.cutFriends来统一数据
  • onsyncfriendaction, 当前报到客户在别的端举办亲密的朋友相关的操作后的回调
  • 操作包蕴
  • 一贯加为老铁
  • 申请加为基友
  • 经过亲密的朋友申请
  • 闭门羹基友申请
  • 除去老铁
  • 更新老铁
  • 此回调会摄取贰个参数obj, 它有一个字段type的值为操作的门类, 具体品种如下:
  • 'addFriend' (直接加为好朋友卡塔尔, 那时obj的字段如下:
  • account的值为被直接加为死党的账号
  • friend为被直接加为老铁的知音对象
  • ps为附言
  • 'applyFriend' (申请加为基友卡塔尔, 这个时候obj的字段如下:
  • account的值为被提请加为好友的账号
  • ps为附言
  • 'passFriendApply' (通过基友申请卡塔尔(قطر‎, 那时obj的字段如下:
  • account的值为被通过死党申请的账号
  • friend为被通过基友申请的好朋友对象
  • ps为附言
  • 'rejectFriendApply' (否决老铁申请卡塔尔(قطر‎, 那时候obj的字段如下:
  • account的值为被推却死党申请的账号
  • ps为附言
  • 'deleteFriend' (删除老铁State of Qatar, 那时候obj的字段如下:
  • account的值为被删除好朋友的账号
  • 'updateFriend' (更新基友卡塔尔(قطر‎, 当时obj的字段如下:
  • friend的值为被更新的好朋友对象
  • 能够调用nim.mergeFriends和nim.cutFriendsByAccounts来统一数据

知音对象

知音对象有以下字段:

  • account: 账号
  • alias: 昵称
  • custom: 扩大字段, 开垦者能够活动扩大, 提出封装成JSON格式字符串
  • createTime: 成为基友的年月
  • updateTime: 更新时间

从来加为好朋友

  • 间接加有些客商为好友后, 对方无需断定, 直接成为当前报到客商的金兰之契
  • ps: 附言, 选填, 开辟者也足以利用JSON格式的字符串来扩展此内容
  • 对方会收到一条项目为'addFriend'的系统通报, 此类系统通报的from字段的值为申请方的帐号, to字段的值为接收方的账号。
nim.addFriend({
account: 'account',
ps: 'ps',
done: addFriendDone
});
function addFriendDone(error, obj) {
console.log(error);
console.log(obj);
console.log('直接加为好友' + (!error?'成功':'失败'));
if (!error) {
onAddFriend(obj.friend);
}
}

申请加为好朋友

  • 申请加有个别客户为死党后, 对方会吸收接纳一条项目为'applyFriend'的系统通报, 此类系统通报的from字段的值为申请方的帐号, to字段的值为采取方的账号, 顾客在吸收接纳老铁申请后, 能够选择经过或许推却基友申请。
  • 如果通过好朋友申请, 那么申请方会收到一条项目为'passFriendApply'的系统通报, 此类系统通报的from字段的值为通过方的帐号, to字段的值为申请方的账号。
  • 如果推却好友申请, 那么申请方会收到一条项目为'rejectFriendApply'的系统通报, 此类系统通报的from字段的值为谢绝方的帐号, to字段的值为申请方的账号。
  • ps: 附言, 选填, 开垦者也得以利用JSON格式的字符串来扩展此内容
nim.applyFriend({
account: 'account',
ps: 'ps',
done: applyFriendDone
});
function applyFriendDone(error, obj) {
console.log(error);
console.log(obj);
console.log('申请加为好友' + (!error?'成功':'失败'));
}

通过亲密的朋友申请

  • 申请加有些客户为很好的朋友后, 对方会收取一条项目为'applyFriend'的系统通报, 此类系统通报的from字段的值为申请方的帐号, to字段的值为选择方的账号, 顾客在收受亲密的朋友申请后, 能够筛选经过可能拒绝死党申请。
  • 如果经过亲密的朋友申请, 那么申请方会收到一条项目为'passFriendApply'的系统通报, 此类系统通报的from字段的值为通过方的帐号, to字段的值为申请方的账号。
  • 如果反驳回绝老铁申请, 那么申请方会收到一条项目为'rejectFriendApply'的系统通报, 此类系统通报的from字段的值为推却方的帐号, to字段的值为申请方的账号。
  • ps: 附言, 选填, 开拓者也得以选取JSON格式的字符串来扩张此内容
// 假设 sysMsg 是通过回调 `onsysmsg` 收到的系统通知
nim.passFriendApply({
idServer: sysMsg.idServer,
account: 'account',
ps: 'ps',
done: passFriendApplyDone
});
function passFriendApplyDone(error, obj) {
console.log(error);
console.log(obj);
console.log('通过好友申请' + (!error?'成功':'失败'));
if (!error) {
onAddFriend(obj.friend);
}
}

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