APICloud开发者进阶之路 | UIPickerView 模块示例demo
本文出自APICloud官方论坛
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
rongCloud2 3.2.8 版本更新后添加了发送小视频接口,发送文件接口。
rongCloud2 概述
融云是国内首家专业的即时通讯云服务提供商,专注为互联网、移动互联网开发者提供即时通讯基础能力和云端服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。
rongCloud2 封装了融云即时通讯能力库 IMLib SDK 的 API,对融云的相关接口做了一一对应的封装,功能详情可参考目录。
使用 rongCloud2 模块之前,请先 注册 融云的开发者帐号并申请创建 App,创建 App 后,可以在 开发者后台 获取 App Key 和 App Secret 用于开发。开发前请先认真阅读相关的 融云开发文档和视频。(请在PC端打开)
由于 (Android )融云sdk 不支持中文路径,需要处理一下,用fs 模块 调用rename接口重命名一下,为了不影响原文件需要先复制一下再进行处理。方法不唯一,提供参考
所用 模块  rongcloud2、fs 模块、fileBrowser 模块以下是页面源码 包括简易登陆获取token页面主功能页面。
一、
<!DOCTYPE html>
  <html>
  <head>
      <meta charset="utf-8">
      <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
      <title>title</title>
      <link rel="stylesheet" type="text/css" href="../css/api.css"/>
      <style>
          body{
          }
          .form{
            width: 100%;
            height: 200px;
            margin-top: 100px;
            text-align: center;
          }
          input{
            width: 80%;
            height: 60px;
            text-align: center;
            font-size: 35px;
            border-radius: 5px;
            border: 1px solid #b23;
          }
          button{
            width: 100px;
            height: 50px;
            margin-left: 100px;
            background-color: green;
            color: #fff;
          }
</style>
  </head>
  <body>
<div class="form">
id:<input id="uid" type="text" name="" value="">
name:<input id="uname" type="text" name="" value="">
</div>
<button type="button" name="button">登陆</button>
<button type="button" name="button">发送</button>
  </body>
  <script type="text/javascript" src="../script/api.js"></script>
  <script type="text/javascript" src="../script/sha1.js"></script>
  <script type="text/javascript">
  var rong = '';
      apiready = function(){
        rong = api.require("rongCloud2");
      };
      function login() {
        var uid = $api.byId('uid').value;
        var uname = $api.byId('uname').value;
        var portraitUri = 'lll'; //会员头像
        var appKey = "*********";
        var appSecret = "***********";
        var nonce = Math.floor(Math.random() * 1000000);//随机数
        var timestamp = Date.now(); //时间戳
        var signature = SHA1("" + appSecret + nonce + timestamp);//数据签名(通过哈希加密计算)
        api.ajax({
                url : "http://api.cn.ronghub.com/user/getToken.json",
                method : "post",
                headers : {
                        "RC-App-Key" : appKey,
                        "RC-Nonce" : "" + nonce,
                        "RC-Timestamp" : "" + timestamp,
                        "RC-Signature" : "" + signature,
                        "Content-Type" : "application/x-www-form-urlencoded"
                },
                data : {
                        values : {
                                userId : uid,
                                name : uname,
                                portraitUri : portraitUri
                        }
                }
        }, function(ret, err) {
                if (ret) {
                        $api.setStorage('token', ret.token);//将token存储到本地
                        api.alert({
                            title: 'testtitle',
                            msg: '以获取token',
                        }, function(ret, err){
                            if( ret ){
                                 api.openWin({
                                     name: 'rong2',
                                     url: './rong2.html',
                                     pageParam: {
                                         name: 'test'
                                     }
                                 });
                            }else{
                                 alert( JSON.stringify( err ) );
                            }
                        });
                } else {
                        alert("获取token失败")
                }
        });
      }
      function sendEv() {
        api.sendEvent({
            name: 'myEvent',
            extra: {
                key1: 'value1',
                key2: 'value2'
            }
        });
        api.openWin({
            name: 'page1',
            url: 'widget://index.html',
            pageParam: {
                name: 'test'
            }
        });
      }
</script>
  </html>
复制代码  
二
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
    <title>title</title>
    <link rel="stylesheet" type="text/css" href="../css/api.css" />
    <style>
        body {}
        .main {
            position: absolute;
            bottom: 0;
            width: 100%;
            height: 200px;
            text-align: center;
            border-top: 1px solid #b23;
        }
        button {
            margin-top: 5px;
            margin-left: 10px;
            width: 90px;
            height: 50px;
        }
        .msg {
            width: 100%;
            height: 300px;
            margin-top: 100px;
        }
        input {
            width: 90%;
            height: 50px;
            border: 1px solid #b33;
            text-align: center;
        }
        .msg button {
            width: 100px;
            height: 50px;
            background-color: green;
            color: #fff;
            border-radius: 5px;
        }
</style>
</head>
<body>
    <div class="msg">
        <input id="sendtxt" type="text" name="" value="" placeholder="发送文本内容">
        <input id="uid" type="text" name="" value="" placeholder="接收者id">
        <button type="button" name="button">发送</button>
        <button type="button" name="button">发文件</button>
        <button type="button" name="button">发视频</button>
    </div>
    <div id="evbtn">
    </div>
</body>
<script type="text/javascript" src="../script/api.js"></script>
<script type="text/javascript">
    var token = '';
    var oldPath = '';
    var fileName = '';
    var type = '';  //按钮
    //初始化模块
    var rong = null;
    var fs = null;
    var fileBrowser = null;
    apiready = function() {
      //初始化模块
        rong = api.require('rongCloud2');
        fs = api.require('fs');
        fileBrowser = api.require('fileBrowser');
        //登陆
        setTimeout(function() {
            getToken();
            msglisten();
            addlistenSta();
            toCon();
        }, 2000);
    };
    //获取缓存token
    function getToken() {
        token = $api.getStorage('token');
        if (token) {
            toInit();
        } else {
            api.openWin({
                name: 'page1',
                url: './token.html',
                pageParam: {
                    name: 'test'
                }
            });
        }
    }
    //初始化融云
    function toInit() {
        rong.init(function(ret, err) {
            if (ret) {
                console.log('init---ok');
            }
        });
    }
    //添加状态监听
    function addlistenSta() {
        rong.setConnectionStatusListener(function(ret, err) {
            if (ret) {
                console.log('监听开启---');
            }
        });
    }
    //连接融云
    function toCon() {
        rong.connect({
            token: token
        }, function(ret, err) {
            alert(JSON.stringify(ret) + '---连接成功');
        });
    }
    function send ( type ) {
      type = type;
      getFilePath();
    }
    function fnEvent( path ) {
      if (type == 'file') {
        sendFileMessageR( path );
      }else {
        sendSightMessageR( path );
      }
    }
    //选取文件
    function getFilePath() {
      fileBrowser.open(function(ret) {
          if (ret) {
            alert(JSON.stringify(ret));
            oldPath = ret.url;
            fileName = ret.name;
            //判断路径是否包含中文
            if (escape(oldPath).indexOf( "%u" )<0){
                alert( "没有包含中文" );
                fnEvent( oldPath );
            } else {
                existIsOk();
            }
          }
      });
    }
    //判断文件夹是否存在
    function existIsOk() {
      fs.exist({
          path: 'fs://rongcloudfilecopy'
      }, function(ret, err) {
        alert(JSON.stringify(ret));
          if (ret.exist) {
              alert('有这个路径');
              copyToRong();
          } else {
              alert('没有这个路径');
              createDirF();
          }
      });
    }
    //创建路径
    function createDirF() {
      fs.createDir({
          path: 'fs://rongcloudfilecopy'
      }, function(ret, err) {
          if (ret.status) {
              alert(JSON.stringify(ret));
              copyToRong();
          } else {
              alert(JSON.stringify(err));
          }
      });
    }
    //复制到融云文件夹
    function copyToRong( ) {
      fs.copyTo({
          oldPath: oldPath,
          newPath: 'fs://rongcloudfilecopy'
      }, function(ret, err) {
          if (ret.status) {
              alert(JSON.stringify(ret));
              renameRong();
          } else {
              alert(JSON.stringify(err));
          }
      });
    }
    //重命名文件
    function renameRong( ) {
      var timestamp = (new Date()).getTime();
      var srtPath1 = fileName.split('.')[0];
      var srtPath2 = fileName.split('.')[1];
      var copyOldPath = 'fs://rongcloudfilecopy/' + fileName ;
      var newPath = 'fs://rongcloudfilecopy/' + timestamp + '.' + srtPath2
      fs.rename({
          oldPath: copyOldPath,
          newPath: newPath
      }, function(ret, err) {
          if (ret.status) {
              alert(JSON.stringify(ret));
              fnEvent( newPath );
          } else {
              alert(JSON.stringify(err));
          }
      });
    }
    //发短视频
    function sendSightMessageR( videoPath ) {
        console.log(videoPath);
        var txt = $api.byId('sendtxt').value;
        var uid = $api.byId('uid').value;
        console.log(uid);
        rong.sendSightMessage({
            conversationType: 'PRIVATE',
            targetId: uid,
            thumbPath: 'fs://picture/dog1.png',
            sightPath: videoPath,   //videoPath,
            //sightPath: 'fs://picture/666.mp4',   //videoPath,
            duration: 5,
            extra: ''
        }, function(ret, err) {
            if (ret.status == 'prepare')
                console.log(JSON.stringify(ret.result.message));
            else if (ret.status == 'progress')
                    console.log(ret.result.progress );
            else if (ret.status == 'success')
                console.log(ret.result.message.messageId);
            else if (ret.status == 'error')
                console.log(err.code);
        });
    }
    //发送文件
    function sendFileMessageR( filePath ) {
        var uid = $api.byId('uid').value;
        console.log(filePath);
        rong.sendFileMessage({
            conversationType: 'PRIVATE',
            targetId: uid,
            filePath: filePath,
            extra: ''
        }, function(ret, err) {
            if (ret.status == 'prepare')
                console.log(JSON.stringify(ret.result.message));
            else if (ret.status == 'progress')
                console.log(ret.result.progress );
            else if (ret.status == 'success')
                console.log(ret.result.message.messageId);
            else if (ret.status == 'error')
                console.log(err.code);
        });
    }
    //发送信息
    function sendmsg() {
        var txt = $api.byId('sendtxt').value;
        var uid = $api.byId('uid').value;
        rong.sendTextMessage({
            conversationType: 'PRIVATE',
            targetId: uid,
            text: txt,
            extra: ''
        }, function(ret, err) {
            if (ret.status == 'prepare')
                api.alert({
                    msg: JSON.stringify(ret.result.message)
                });
            else if (ret.status == 'success')
                api.alert({
                    msg: ret.result.message.messageId
                });
            else if (ret.status == 'error')
                api.alert({
                    msg: err.code
                });
        });
    }
    //消息监听
    function msglisten() {
        rong.setOnReceiveMessageListener(function(ret, err) {
            // api.alert({ msg: JSON.stringify(ret.result.message) });
            alert('收到了消息');
            console.log(JSON.stringify(ret.result));
            // setInterval(function () {
            //   rong.getConnectionStatus(function(ret, err) {
            //       console.log( ret.result.connectionStatus );
            //   })
            // }, 2000);
            // var receivetxtSTR = ret.result.message.content.text;
            // tid = ret.result.message.targetId
            // console.log(tid);
            // $api.byId('receivetxt').value = receivetxtSTR;
            // rong.sendReadReceiptMessage({
            //     targetId: tid
            // }, function(ret) {
            //     api.alert({
            //         msg: JSON.stringify(ret) + '我已读了'
            //     });
            // });
        })
    }
</script>
</html>
复制代码 
                    更多精彩
		 
													 
													 
													 
													 
	 
		

