APICloud框架——融云+UIChatTools实现即时通讯聊天

今天完成了公司app的聊天界面的收发消息功能,结合融云2和UIChatTools模块实现,只是实现了基本功能,好多细节还没有实现,废话不多说,上代码

输入框页面(win)

先引入所需模块

    // 融云模块
    var rong = api.require('rongCloud2');

    //聊天界面模块
    var UIChatTools = api.require('UIChatTools');

初始化聊天输入框UIChatTools模块


// 聊天界面
function chatTools() {
  UIChatTools.open({
    chatBox: {
        placeholder: '聊天内容',     
        autoFocuse: true,  
        maxRows: 6     
    },
    styles: {
        bgColor: '#D1D1D1',   
        margin: 10,           
    },
    tools: {
        h: 35,          
        iconSize: 30,   
        recorder: {     
            normal: 'fs://UIChatTolls/recorder.png',  
            selected: 'fs://UIChatTolls/recorder1.png' 
        },
        image: {        
            normal: 'fs://UIChatTolls/image.png',  
            selected: 'fs://UIChatTolls/image1.png' 
        },
        video: {        
            normal: 'fs://UIChatTolls/video.png',  
            selected: 'fs://UIChatTolls/video1.png' 
        },
        face: {         
            normal: 'fs://UIChatTolls/face2.png',  
            selected: 'fs://UIChatTolls/face1.png' 
        },
        append: {       
            normal: 'fs://UIChatTolls/append.png',  
            selected: 'fs://UIChatTolls/append1.png'
        }
    },
    // 表情
    // emotions:['widget://image/chatPage/emoticons/basic','widget://image/chatPage/emoticons/append1','widget://image/chatPage/emoticons/append2']
}, function(ret) {
    if (ret) {
        if (ret.eventType === 'send') {
            // 发送消息
            sendMsg(ret.msg);
        }
    } 
});
// 附加按钮
UIChatTools.setAppendButton({
    styles: {
        row: 2,         
        column: 4,         
        iconSize: 50,      
        titleSize: 13,   
        titleColor: '#f00'     
    },
    buttons: [
        {
            normal: 'widget://image/chatPage/album2.png',       
            highlight: 'widget://image/chatPage/album2.png',    
            title: '电话'       
        },{
            normal: 'widget://image/chatPage/album2.png',       
            highlight: 'widget://image/chatPage/album2.png',    
            title: '收藏' 
        },{
            normal: 'widget://image/chatPage/album2.png',       
            highlight: 'widget://image/chatPage/album2.png',    
            title: '发红包' 
        }
    ]
}, function(ret) {
    api.alert({msg:'点击了第'+ret.index+'个按钮'});
});
// 监听功能按钮
UIChatTools.toolsListener(function(ret) {
    if (ret.eventType == 'video') {
        api.alert({
            title: 'title',
            msg: 'video',
        }, function(ret, err) {
            if (ret) {
                alert(JSON.stringify(ret));
            } else {
                alert(JSON.stringify(err));
            }
        });
    }
});
// 接入融云
rongyun();
}

接入融云

// 接入融云
function rongyun () {

    rong.init(function(ret, err) {
        if (ret.status == 'error')
            api.toast({ msg: err.code });
    });
    // 监听接收消息
    receiveMsg();
    rong.connect(
        {   
            // 用户1
            // token: '用户1token'
            // 用户2
            token: '用户2token'
        },function(ret, err) { 
            if (ret.status == 'success') api.toast({ msg: ret.result.userId }); 
        });

}

监听接收消息

// 监听接收消息
function receiveMsg() {
   rong.setOnReceiveMessageListener(function(ret, err) {
      // 由于聊天框界面和聊天内容不是一个页面所以要使用事件监听的方式通知聊天内容页面,传递参数
      api.sendEvent({
          name: 'receiveMsg',
          extra: {
              msg: ret.result.message.content.text
          }
      });
    })
}

发送消息

function sendMsg(msg) {
  var sendMsg;
  rong.sendTextMessage({
      conversationType: 'PRIVATE',
      targetId: 'testUser1',
      text: msg,
      extra: ''
  }, function(ret, err) {
      if (ret.status == 'prepare') {
        // 获取发送的消息内容
        sendMsg = ret.result.message.content.text;
      }

      else if (ret.status == 'success') {
          // 广播发送消息事件
          api.sendEvent({
              name: 'sendMsg',
              extra: {
                  msg: sendMsg
              }
          });
      }
      else if (ret.status == 'error') {
          api.alert({
              title: 'title',
              msg: err.code,
          }, function(ret, err) {
              if (ret) {
                  alert(JSON.stringify(ret));
              } else {
                  alert(JSON.stringify(err));
              }
          });
      }
  });
}

聊天内容页面(Frame)

监听发送消息

api.addEventListener({
    name: 'sendMsg'
}, function(ret, err) {
    // 发送消息后, 添加消息内容到页面
        $api.append($api.dom('.main'),'<div class="oneself clearfix"><img class="fr" src="../../image/tx_2.jpg"><p class="fr"> ' + ret.value.msg + ' </p></div>');
});

监听页面接收消息

api.addEventListener({
    name: 'receiveMsg'
}, function(ret, err) {
    // 收到消息后, 添加消息内容到页面
    $api.append($api.dom('.main'),'<div class="other clearfix"><img class="fl" src="../../image/tx_2.jpg"><p class="fl">' + ret.value.msg + '</p></div>');
});

基本功能已经实现,效果如图

)=

欢迎访问博客

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值