为多个小部件之间提供互相通信的能力,实现一个联动效果
joinChannel |
||||
函数信息 |
支持设备 |
所属对象 |
最低手淘版本 |
|
iOS android |
|
10.25.0 |
||
函数说明 |
1)加入消息通道,同一消息通道下的不同消息主体可以互相发送消息 2)通过 3)通过 4)后加入的主体,在加入时会收到历史所有消息 5)每个小部件最多加入两条消息通道 |
|||
入参 |
名称 |
类型 |
必选 |
说明 |
token |
|
消息通道的token,具备唯一性,必须从IDE申请获取,自定义无效 |
||
success |
|
调用成功的回调 |
||
fail |
|
调用失败的回调,错误码: error:11,errorMessage:param is nil error:12,errorMessage:token is invalid error:13,errorMessage:has reached the maximum number of channels[] |
||
返回值 |
无 |
|||
示例 |
my.joinChannel({ token: 'xxx' success: function(res) { my.alert({content: '成功:' + res}); }, fail: function(res){ my.alert({content: '失败:' + res}); } }); |
exitChannel |
||||
函数信息 |
支持设备 |
所属对象 |
最低手淘版本 |
|
iOS android |
|
10.25.0 |
||
函数说明 |
1)离开消息通道,离开后不再收到通道内消息 2)当channel内所有通信主体数量为0,销毁channel,消息队列清空 |
|||
入参 |
名称 |
类型 |
必选 |
说明 |
token |
|
消息通道的token,具备唯一性,必须从IDE申请获取,自定义无效 |
||
success |
|
调用成功的回调 |
||
fail |
|
调用失败的回调,错误码: error:11,errorMessage:param is nil error:14,errorMessage:has not joined channel[] |
||
返回值 |
无 |
|||
示例 |
my.exitChannel({ token: 'xxx' success: function(res) { my.alert({content: '成功:' + res}); }, fail: function(res){ my.alert({content: '失败:' + res}); } }); |
sendChannelMessage |
||||
函数信息 |
支持设备 |
所属对象 |
最低手淘版本 |
|
iOS android |
|
10.25.0 |
||
函数说明 |
通过消息通道发送消息,通道内其他主体均能收到消息 |
|||
入参 |
名称 |
类型 |
必选 |
说明 |
token |
|
消息通道的token,具备唯一性,必须从IDE申请获取,自定义无效 |
||
msg |
|
消息内容 |
||
success |
|
调用成功的回调 |
||
fail |
|
调用失败的回调,错误码: error:11,errorMessage:param is nil error:14,errorMessage:has not joined channel[] |
||
返回值 |
无 |
|||
示例 |
my.sendChannelMessage({ token: 'xxx', msg: {}, success: function(res) { my.alert({content: '成功:' + res}); }, fail: function(res){ my.alert({content: '失败:' + res}); } }); |
onChannelMessage |
||||
函数信息 |
支持设备 |
所属对象 |
最低手淘版本 |
|
iOS android |
|
10.25.0 |
||
函数说明 |
1)监听消息通道,可以收到channel内其他消息主体发送的消息 2)建议 |
|||
入参 |
名称 |
类型 |
必选 |
说明 |
callback |
|
消息回调,数据格式:Array<object> object的参数: token: 消息通道的token (string) msg:消息内容主体 (object) timestamp:时间戳 (number) |
||
返回值 |
无 |
|||
示例 | my.onChannelMessage((res)=>{ for(var i=0; i<res.length; i++) { console.log(res.token); console.log(res.msg); console.log(res.timestamp); } }); |
① channelKey与appId不绑定,可任意生成,但端侧会限制每个小部件只能加入两个channel;
② 模板小部件实例化出来的小部件,token不做特殊处理(所以模板小部件会用同一个channel)。
isv也可以自行在模板小部件内根据逻辑设置不同token。
每个小部件最多可创建2个channel。
① 默认不创建channel;
② 通过调用my.joinChannel
创建channel,channel存在时,加入channel;
③ 通过my.onChannelMessage
监听消息;
④ my.joinChannel
会使channel记录此通信主体;
⑤ 在为调用my.joinChannel
的情况下,调用my.onChannelMessage
和my.sendChannelMessage
均会返回错误;
⑥ my.exitChannel
和小部件销毁均会使channel删除此通信主体;
⑦ channel内通信主体数量为0时,销毁channel;
需要isv显式调用my.onChannelMessage
监听通道消息,对于join加入channel的对象,首次会补发channel内的历史消息;
① 对于历史消息中存在的重复操作,需要isv自行过滤处理;
② 消息队列的生命周期与channel的生命周期一致;