diff --git a/app.js b/app.js index 2fb2154..5c10cef 100644 --- a/app.js +++ b/app.js @@ -1,16 +1,16 @@ // app.js +import ImSdk from "./utils/im" App({ onLaunch() { // 展示本地存储能力 - // 登录 - wx.login({ - success: res => { - // 发送 res.code 到后台换取 openId, sessionKey, unionId - } - }) + this.globalData.im = new ImSdk(1400438486,'') + console.log(this.globalData.im) + + }, globalData: { - userInfo: null + userInfo: null, + im:{} } }) diff --git a/pages/index/index.js b/pages/index/index.js index 0eff0a9..f1599d6 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -1,7 +1,6 @@ // index.js // 获取应用实例 const app = getApp() -import im from "../../utils/im.js" Page({ data: { longitude: "117.85", @@ -47,7 +46,11 @@ Page({ // this.setData({ // map: wx.createMapContext('map') // }) - console.log(im) // console.log(this.data.map) + wx.login({ + success(res){ + console.log(res.code) + } + }) } }) diff --git a/utils/im.js b/utils/im.js index 5bb38b7..49489ef 100644 --- a/utils/im.js +++ b/utils/im.js @@ -1,11 +1,187 @@ import TIM from '../miniprogram_npm/tim-wx-sdk/index.js'; -let options = { - SDKAppID: 0 // 接入时需要将0替换为您的即时通信 IM 应用的 SDKAppID -}; -// 创建 SDK 实例,`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例 -let tim = TIM.create(options); // SDK 实例通常用 tim 表示 -// 设置 SDK 日志输出级别,详细分级请参见 setLogLevel 接口的说明 -tim.setLogLevel(0); // 普通级别,日志量较多,接入时建议使用 -// tim.setLogLevel(1); // release 级别,SDK 输出关键信息,生产环境时建议使用 -// 注册腾讯云即时通信 IM 上传插件 -export default tim; \ No newline at end of file + + +class ImSdk { + tim = {}; + readyRes = function(){ + + } + messageRes = function(){ + + } + messageRevokedRes = function(){ + + } + messagePeer = function(){ + + } + listUpdate = function(){ + + } + groupListUpdate = function(){ + + } + profileUpdate = function(){ + + } + blacklistUpdate = function(){ + + } + erroeRes = function(){ + + } + setNotReady = function(){ + + } + kickedOut = function(){ + + } + netState = function(){ + + } + constructor(SDKAppID) { + let options = { + SDKAppID // 接入时需要将0替换为您的即时通信 IM 应用的 SDKAppID + }; + // 创建 SDK 实例,`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例 + this.tim = TIM.create(options); // SDK 实例通常用 tim 表示 + // 设置 SDK 日志输出级别,详细分级请参见 setLogLevel 接口的说明 + this.tim.setLogLevel(0); // 普通级别,日志量较多,接入时建议使用 + // tim.setLogLevel(1); // release 级别,SDK 输出关键信息,生产环境时建议使用 + this.tim.on(TIM.EVENT.SDK_READY, function (event) { + // 收到离线消息和会话列表同步完毕通知,接入侧可以调用 sendMessage 等需要鉴权的接口 + // event.name - TIM.EVENT.SDK_READY + this.readyres(event) + }); + this.tim.on(TIM.EVENT.MESSAGE_RECEIVED, function (event) { + // 收到推送的单聊、群聊、群提示、群系统通知的新消息,可通过遍历 event.data 获取消息列表数据并渲染到页面 + // event.name - TIM.EVENT.MESSAGE_RECEIVED + // event.data - 存储 Message 对象的数组 - [Message] + this.messageRes(event) + }); + this.tim.on(TIM.EVENT.MESSAGE_REVOKED, function (event) { + // 收到消息被撤回的通知 + // event.name - TIM.EVENT.MESSAGE_REVOKED + // event.data - 存储 Message 对象的数组 - [Message] - 每个 Message 对象的 isRevoked 属性值为 true + this.messageRevokedRes(event) + }); + this.tim.on(TIM.EVENT.MESSAGE_READ_BY_PEER, function (event) { + // SDK 收到对端已读消息的通知,即已读回执。使用前需要将 SDK 版本升级至 v2.7.0 或以上。仅支持单聊会话。 + // event.name - TIM.EVENT.MESSAGE_READ_BY_PEER + // event.data - event.data - 存储 Message 对象的数组 - [Message] - 每个 Message 对象的 isPeerRead 属性值为 true + this.messagePeer(event) + }); + this.tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, function (event) { + // 收到会话列表更新通知,可通过遍历 event.data 获取会话列表数据并渲染到页面 + // event.name - TIM.EVENT.CONVERSATION_LIST_UPDATED + // event.data - 存储 Conversation 对象的数组 - [Conversation] + this.listUpdate(event) + }); + this.tim.on(TIM.EVENT.GROUP_LIST_UPDATED, function (event) { + // 收到群组列表更新通知,可通过遍历 event.data 获取群组列表数据并渲染到页面 + // event.name - TIM.EVENT.GROUP_LIST_UPDATED + // event.data - 存储 Group 对象的数组 - [Group] + this.setGroupListUpdate(event) + }); + this.tim.on(TIM.EVENT.PROFILE_UPDATED, function (event) { + // 收到自己或好友的资料变更通知 + // event.name - TIM.EVENT.PROFILE_UPDATED + // event.data - 存储 Profile 对象的数组 - [Profile] + this.setProfileUpdate(event) + }); + this.tim.on(TIM.EVENT.BLACKLIST_UPDATED, function (event) { + // 收到黑名单列表更新通知 + // event.name - TIM.EVENT.BLACKLIST_UPDATED + // event.data - 存储 userID 的数组 - [userID] + this.blacklistUpdate(event) + }); + this.tim.on(TIM.EVENT.ERROR, function (event) { + // 收到 SDK 发生错误通知,可以获取错误码和错误信息 + // event.name - TIM.EVENT.ERROR + // event.data.code - 错误码 + // event.data.message - 错误信息 + this.erroeRes(event) + }); + this.tim.on(TIM.EVENT.SDK_NOT_READY, function (event) { + // 收到 SDK 进入 not ready 状态通知,此时 SDK 无法正常工作 + // event.name - TIM.EVENT.SDK_NOT_READY + this.setNotReady(event) + }); + this.tim.on(TIM.EVENT.KICKED_OUT, function (event) { + // 收到被踢下线通知 + // event.name - TIM.EVENT.KICKED_OUT + // event.data.type - 被踢下线的原因,例如: + // - TIM.TYPES.KICKED_OUT_MULT_ACCOUNT 多实例登录被踢 + // - TIM.TYPES.KICKED_OUT_MULT_DEVICE 多终端登录被踢 + // - TIM.TYPES.KICKED_OUT_USERSIG_EXPIRED 签名过期被踢 (v2.4.0起支持)。 + this.kickedOut(event) + }); + this.tim.on(TIM.EVENT.NET_STATE_CHANGE, function (event) { + // 网络状态发生改变(v2.5.0 起支持)。 + // event.name - TIM.EVENT.NET_STATE_CHANGE + // event.data.state 当前网络状态,枚举值及说明如下: + // \- TIM.TYPES.NET_STATE_CONNECTED - 已接入网络 + // \- TIM.TYPES.NET_STATE_CONNECTING - 连接中。很可能遇到网络抖动,SDK 在重试。接入侧可根据此状态提示“当前网络不稳定”或“连接中” + // \- TIM.TYPES.NET_STATE_DISCONNECTED - 未接入网络。接入侧可根据此状态提示“当前网络不可用”。SDK 仍会继续重试,若用户网络恢复,SDK 会自动同步消息 + this.netState(event) + }); + } + + setReady(res) { + this.readyRes = res + + } + + setMessage(res) { + this.messageRes = res + } + + setMessageRevoked(res) { + this.messageRevokedRes = res + } + + setMessagePeer(res) { + this.messagePeer = res + } + + setListUpdate(res) { + this.listUpdate = res + } + + setGroupListUpdate(res) { + this.groupListUpdate = res + } + + setProfileUpdate(res) { + this.profileUpdate = res + } + + setBlacklistUpdate(res) { + this.blacklistUpdate = res + } + + setError(res) { + this.erroeRes = res + } + + setNotReady(res) { + this.setNotReady = res + } + + setKickedOut(res) { + this.kickedOut = res + } + + setNetState(res) { + this.netState = res + } + + login(userID, userSig) { + this.tim.login({ userID, userSig }); + } +} + + + + +export default ImSdk; \ No newline at end of file