zoukankan      html  css  js  c++  java
  • APICloud开发者进阶之路 | UIPickerView 模块示例demo

    本文出自APICloud官方论坛

    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{
    
                 100%;
    
                height: 200px;
    
                margin-top: 100px;
    
                text-align: center;
    
              }
    
              input{
    
                 80%;
    
                height: 60px;
    
                text-align: center;
    
                font-size: 35px;
    
                border-radius: 5px;
    
                border: 1px solid #b23;
    
              }
    
              button{
    
                 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;
    
                 100%;
    
                height: 200px;
    
                text-align: center;
    
                border-top: 1px solid #b23;
    
            }
    
            button {
    
                margin-top: 5px;
    
                margin-left: 10px;
    
                 90px;
    
                height: 50px;
    
            }
    
            .msg {
    
                 100%;
    
                height: 300px;
    
                margin-top: 100px;
    
            }
    
            input {
    
                 90%;
    
                height: 50px;
    
                border: 1px solid #b33;
    
                text-align: center;
    
            }
    
            .msg button {
    
                 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>
    
    复制代码
  • 相关阅读:
    JMeter参数化及断言的使用
    JMeter基础概念
    postman关联
    postman参数化
    postman发送请求的简单操作
    postman的简单介绍及运用
    javascript小记五则:用JS写一个图片左右自由滚动的“跑马灯”效果
    javascript小记四则:用JS写一个滚动横条文字,可以根据需要进行修改;
    javascript小记三则:ASP.NET启动web调试,窗体自动放大的方法
    JavaScript小记二则:接上一节:用.net写Textbox控件关于数字的判断的另一则方法
  • 原文地址:https://www.cnblogs.com/APICloud/p/12207154.html
Copyright © 2011-2022 走看看