Init 初始化
1. 引入sdk
下载wechat-mudu.min.js到小程序项目,建议放utils目录下
const Mudu = require('./utils/wechat-mudu.min')
2. 设置小程序code获取session_key地址
本方法已废弃 sdk会在初始化的时候获取用户的微信资料并设置到目睹平台,所以需要设置该地址用户获取用户openid, 详见用户
Mudu.setOption('login_server_url', 'http://xxxxx.com/path/')
3. 手动设置小程序加载模块
初始化之前注册需要初始化的模块, 可配置模块有 'Comment', 'LuckyDraw', 'PPT', 'Vote', 'Player' , 若不配置register_modal
, 默认初始化所有模块
Mudu.setOption('register_modal', ['Comments', 'Vote', 'PPT'])
4. 初始化
除
setOption
,storage
,transfer
等之外的接口,在初始化完成之后执行才有效.
Mudu.Init(
// 频道id
41988,
// 初始化完成的回调函数,无参数
function () {
console.log('Mudu Web Sdk 初始化成功')
}
)
Room.Init.Over 事件
Room.Init.Over事件会在sdk初始化完成后被触发
Mudu.MsgBus.On(
// 事件名,值为Room.Init.Over
'Room.Init.Over',
// 事件处理函数,无参数
function () {
console.log('初始化完成')
}
)
Room.Init.Error 事件
Room.Init.Error事件会在sdk初始化失败后被触发, 通常原因是该频道所属的目睹用户不是专业版或者企业版,或者不是流量计费用户。
Mudu.MsgBus.On(
// 事件名,值为Room.Init.Error
'Room.Init.Error',
// 事件处理函数,初始化错误对象
function (err) {
throw err
}
)
获取sdk初始化状态
// 返回sdk初始化状态,类型为boolean:`true`为初始化成功, `false`为初始化失败或尚未完成初始化
var initResult = Mudu.GetInitStatus()
提示
如果您希望在使用sdk时,观众的使用的是您自定义的用户信息,我们推荐下面的写法:
function init(actId, name, avatar, assign_id) {
return new Promise(function(resolve, reject){
Mudu.Init(actId, function(){
Mudu.Room.User.Assign({
name: name, // string
avatar: avatar, // string 网络链接
assignId: assign_id // B端平台识别id string
}, function(){
resolve()
})
});
Mudu.MsgBus.On('Room.Init.Error', function (e) {
reject(e)
});
})
}
init(8000024, 'nick', 'https://xxxx', 'your_uniqueId').then(function(){ // your_uniqueId 推荐使用用户的openId或unionId,方便后续在目睹平台查找用户
// 业务逻辑
}, function(e){
// 出错
});
关于小程序处于后台状态时,socket连接会出现异常的情况
具体描述:小程序进入后台时,会出现捕获不到socket断开的情况,故针对这种情况提供下述方法
//index.js
//获取应用实例
const app = getApp()
const Mudu = require('./utils/wechat-mudu') // 替换成项目中的实际路径
Page({
data: {
},
onLoad: function () {
Mudu.Init(
// 频道id
41988,
// 初始化完成的回调函数,无参数
function () {
console.log('Mudu Web Sdk 初始化成功')
}
)
},
onShow: function() {
try {
if ('function' === typeof Mudu.Room.reconnectSocket) {
Mudu.Room.reconnectSocket() // 该方法在Mudu.Init成功后,才会挂载在Mudu.Room上
}
} catch (e) {
console.warn('reconnect mudu socket error: ', e)
}
},
onHide: function() {
try {
if ('function' === typeof Mudu.Room.closeSocket) {
Mudu.Room.closeSocket() // 该方法在Mudu.Init成功后,才会挂载在Mudu.Room上
}
} catch (e) {
console.warn('close mudu socket error: ', e)
}
}
})