From 39e00f1811dff8e5d77cc46096c3a9d95ae042a7 Mon Sep 17 00:00:00 2001
From: luyuan <1162963624@qq.com>
Date: Fri, 2 Apr 2021 13:49:21 +0800
Subject: [PATCH] im
---
app.js | 14 ++--
pages/index/index.js | 7 +-
utils/im.js | 196 ++++++++++++++++++++++++++++++++++++++++---
3 files changed, 198 insertions(+), 19 deletions(-)
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