差别
这里会显示出您选择的修订版和当前版本之间的差别。
— |
start:400webimintegration:contactmanagement [2018/12/12 09:13] (当前版本) jk 创建 |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 好友管理 ====== | ||
+ | ===== 参数解释 ===== | ||
+ | |||
+ | ^名称 ^字段名 ^数据类型 ^描述^ | ||
+ | |环信 ID |username |String |环信 ID 是环信用户的唯一标识,在 AppKey 的范围内唯一| | ||
+ | |||
+ | |||
+ | ===== 查询好友列表 ===== | ||
+ | |||
+ | 查询好友列表时,要注意 subscription (both, to, from) 为不同值的处理。此处默认 both 和 to 的为好友,开发者自定义处理,保持跟 APP 端处理一致即可。 | ||
+ | |||
+ | <code javascript> | ||
+ | conn.getRoster({ | ||
+ | success: function ( roster ) { | ||
+ | //获取好友列表,并进行好友列表渲染,roster格式为: | ||
+ | /** [ | ||
+ | { | ||
+ | jid:'asemoemo#chatdemoui_test1@easemob.com', | ||
+ | name:'test1', | ||
+ | subscription: 'both' | ||
+ | } | ||
+ | ] | ||
+ | */ | ||
+ | for ( var i = 0, l = roster.length; i < l; i++ ) { | ||
+ | var ros = roster[i]; | ||
+ | //ros.subscription值为both/to为要显示的联系人,此处与APP需保持一致,才能保证两个客户端登录后的好友列表一致 | ||
+ | if ( ros.subscription === 'both' || ros.subscription === 'to' ) { | ||
+ | |||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | }); | ||
+ | </code> | ||
+ | |||
+ | ===== 添加/删除好友请求 ===== | ||
+ | |||
+ | 通过 SDK 的 subscribe 和 unsubscribe 进行添加或者删除好友操作,登录用户通过注册 onPresence,监听对方的添加或者删除好友请求,并做相应的处理。 | ||
+ | |||
+ | <code javascript> | ||
+ | //easemobwebim-sdk中收到联系人订阅请求的处理方法,具体的type值所对应的值请参考xmpp协议规范 | ||
+ | var handlePresence = function ( e ) { | ||
+ | //(发送者希望订阅接收者的出席信息),即别人申请加你为好友 | ||
+ | if ( e.type === 'subscribe' ) { | ||
+ | //若e.status中含有[resp:true],则表示为对方同意好友后反向添加自己为好友的消息,demo中发现此类消息,默认同意操作,完成双方互为好友;如果不含有[resp:true],则表示为正常的对方请求添加自己为好友的申请消息。 | ||
+ | } | ||
+ | |||
+ | //(发送者允许接收者接收他们的出席信息),即别人同意你加他为好友 | ||
+ | if ( e.type === 'subscribed' ) { | ||
+ | |||
+ | } | ||
+ | | ||
+ | //(发送者取消订阅另一个实体的出席信息),即删除现有好友 | ||
+ | if ( e.type === 'unsubscribe' ) { | ||
+ | |||
+ | } | ||
+ | | ||
+ | //(订阅者的请求被拒绝或以前的订阅被取消),即对方单向的删除了好友 | ||
+ | if ( e.type === 'unsubscribed' ) { | ||
+ | |||
+ | } | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | ===== 添加好友 ===== | ||
+ | |||
+ | |||
+ | <code javascript> | ||
+ | // 添加好友 | ||
+ | var addFriends = function () { | ||
+ | conn.subscribe({ | ||
+ | to: 'username', | ||
+ | // Demo里面接收方没有展现出来这个message,在status字段里面 | ||
+ | message: '加个好友呗!' | ||
+ | }); | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | ===== 处理好友请求 ===== | ||
+ | |||
+ | 当收到“添加好友”的请求时,用户可能会同意或拒绝添加对方为好友,处理方式如下。 | ||
+ | |||
+ | ==== 同意添加对方为好友 ==== | ||
+ | |||
+ | <code javascript> | ||
+ | conn.listen({ | ||
+ | onPresence: function ( message ) { | ||
+ | handlePresence(message); | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | |||
+ | //收到联系人订阅请求的处理方法,具体的type值所对应的值请参考xmpp协议规范 | ||
+ | var handlePresence = function ( e ) { | ||
+ | |||
+ | //对方收到请求加为好友 | ||
+ | if (e.type === 'subscribe') { | ||
+ | | ||
+ | /*同意添加好友操作的实现方法*/ | ||
+ | conn.subscribed({ | ||
+ | to: 'username', | ||
+ | message : '[resp:true]' | ||
+ | }); | ||
+ | conn.subscribe({//需要反向添加对方好友 | ||
+ | to: e.from, | ||
+ | message : '[resp:true]' | ||
+ | }); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== 拒绝添加对方为好友 ==== | ||
+ | |||
+ | <code javascript> | ||
+ | conn.listen({ | ||
+ | onPresence: function ( message ) { | ||
+ | handlePresence(message); | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | |||
+ | //收到联系人订阅请求的处理方法,具体的type值所对应的值请参考xmpp协议规范 | ||
+ | var handlePresence = function ( e ) { | ||
+ | |||
+ | //对方收到请求加为好友 | ||
+ | if (e.type === 'subscribe') { | ||
+ | | ||
+ | /*拒绝添加好友的方法处理*/ | ||
+ | conn.unsubscribed({ | ||
+ | to: 'username', | ||
+ | message : 'rejectAddFriend' | ||
+ | }); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ===== 删除好友 ===== | ||
+ | |||
+ | <code javascript> | ||
+ | // 删除好友 | ||
+ | var removeFriends = function () { | ||
+ | conn.removeRoster({ | ||
+ | to: 'username', | ||
+ | success: function () { // 删除成功 | ||
+ | conn.unsubscribed({ | ||
+ | to: 'username' | ||
+ | }); | ||
+ | }, | ||
+ | error: function () { // 删除失败 | ||
+ | } | ||
+ | }); | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | ===== 黑名单 ===== | ||
+ | |||
+ | ==== 将好友加入黑名单 ==== | ||
+ | |||
+ | 将好友加入黑名单后,对方好友列表依然可以看到已方,但无法向已方发送消息。 | ||
+ | |||
+ | <code javascript> | ||
+ | // list的结构为{username_1: {}, username_2: {}...},拉黑好友需要将拉黑后的黑名单里的好友信息全部传入, | ||
+ | // 如黑名单此时已有A,B两位好友,现想将C也拉进黑名单,正确的操作是同时将ABC的信息都传入接口中。 | ||
+ | /* | ||
+ | var list = { | ||
+ | username_1:{ | ||
+ | jid: 'appKey_'+username_1+'@easemob.com', | ||
+ | name: username_1, | ||
+ | subscription: 'both', | ||
+ | order: 2 | ||
+ | }, | ||
+ | username_2:{ | ||
+ | jid: 'appKey_'+username_2+'@easemob.com', | ||
+ | name: username_2, | ||
+ | subscription: 'both', | ||
+ | order: 3, | ||
+ | type: 'jid' | ||
+ | }, | ||
+ | username_3:{ | ||
+ | jid: 'appKey_'+username_3+'@easemob.com', | ||
+ | name: username_3, | ||
+ | subscription: 'both', | ||
+ | order: 4, | ||
+ | type: 'jid' | ||
+ | } | ||
+ | } | ||
+ | jid, username, subscription均在获取好友列表时已获取到,用户可根据好友列表动态获取这些参数, | ||
+ | order不重复即可 | ||
+ | */ | ||
+ | var addToBlackList = function () { | ||
+ | var list = { | ||
+ | // user_1 | ||
+ | asdfghj: { | ||
+ | jid: 'easemob-demo#chatdemoui_asdfghj@easemob.com', | ||
+ | name: 'asdfghj', | ||
+ | subscription: 'both', | ||
+ | order: 2, | ||
+ | type: 'jid' | ||
+ | }, | ||
+ | // user_2 | ||
+ | wjy6: { | ||
+ | jid: 'easemob-demo#chatdemoui_wjy6@easemob.com', | ||
+ | name: 'wjy6', | ||
+ | subscription: 'both', | ||
+ | order: 3, | ||
+ | type: 'jid' | ||
+ | } | ||
+ | }; | ||
+ | conn.addToBlackList({ | ||
+ | list: list, | ||
+ | type: 'jid', | ||
+ | success: function () { | ||
+ | console.log('Add friend to black list success'); | ||
+ | }, | ||
+ | error: function () { | ||
+ | console.log('Add friend to black list error'); | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== 获取黑名单列表 ==== | ||
+ | |||
+ | 调用getBlacklist函数获取好友黑名单列表。调用这个函数时,会回调conn.listen里的onBlacklistUpdate函数,具体细节请参照[[im:400webimintegration:25intiate|Web SDK基础功能]]。 | ||
+ | |||
+ | <code javascript> | ||
+ | var getBlackList = function () { | ||
+ | conn.getBlacklist(); | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | ==== 将好友移出黑名单 ==== | ||
+ | |||
+ | 将好友移出黑名单的机制是,将移出后某好友后黑名单中的好友组成一个list,传入接口重建黑名单。例如,黑名单中有ABC三个人,需要移出A,则将B和C组合成一个list传入接口。若list为空,则清空黑名单。 | ||
+ | |||
+ | <code javascript> | ||
+ | // 将好友从黑名单拉出来 | ||
+ | var removeBlackList = function () { | ||
+ | var list = [ | ||
+ | { | ||
+ | wjy6: { | ||
+ | jid: 'easemob-demo#chatdemoui_mengyuanyuan01@easemob.com', | ||
+ | name: 'mengyuanyuan01', | ||
+ | order: '2', | ||
+ | type: 'jid' | ||
+ | } | ||
+ | }, | ||
+ | { | ||
+ | mengyuanyuan: { | ||
+ | jid: 'easemob-demo#chatdemoui_wjy6@easemob.com', | ||
+ | name: 'wjy6', | ||
+ | order: '4', | ||
+ | type: 'jid', | ||
+ | } | ||
+ | } | ||
+ | ]; | ||
+ | conn.removeFromBlackList({ | ||
+ | list: list, | ||
+ | type: 'jid', | ||
+ | success: function () { | ||
+ | console.log('Remove from black list success.'); | ||
+ | }, | ||
+ | error: function () { | ||
+ | console.log('Remove from black list error.') | ||
+ | } | ||
+ | }); | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ---- | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | 上一页:[[start:400webimintegration:30singlechat|消息]] | ||
+ | </WRAP> | ||
+ | |||
+ | <WRAP half column> | ||
+ | 下一页:[[start:400webimintegration:40groupchat|群组管理]] | ||
+ | </WRAP> | ||
+ | </WRAP> |