运行融云 RongCloud Cordova 的官方例子

对于安卓开发者来说,Cordova 是一个不错的选择,开发效率高,性能也可以满足绝大部分的场景。融云是比较早的聊天解决方案,提供了 Cordova 插件和例子,但是已经好久没有更新,这里是融云 Cordova 例子的运行过程。

使用阅读本文之前,请先注册融云的开发者帐号并申请创建 App,创建 App 后,可以在开发者后台获取 App Key 和 App Secret 用于开发。

需要准备的环境,Java、Javac、Python 2.x、Node、Npm、Android开发环境、C、C++编译环境、Node-gyp。

一、安装 Cordova npm install -g cordova

二、安装 Ionic,由于 Ionic 最新版本为3.6,我们需要使用低版本npm install -g ionic@2.0.0

三、下载融云 Cordova 官方例子,https://github.com/rongcloud/cordova-plugin-rongcloud-im-demo/archive/master.zip,下载后解压缩

四、新建空的 Ionic 项目,在命令行中输入ionic start rongcloud blank,由于 Windows 搭建编译环境比较复杂,且不支持较深的目录结构,建议在 Ubuntu 下进行 Node 开发,也可在 Ubuntu 下执行完四、五命令后将整个目录拷贝到 Windows 系统下继续开发

五、将 rongcloud 内的 packages.json 和 www 文件夹删除,将 cordova-plugin-rongcloud-im-demo 内的 packages.json 和 www 文件夹拷贝到 rongcloud 文件夹内,在命令行 rongcloud 下输入,ionic state restore

六、由于 http://webim.demo.rong.io/ 已不可用,需要搭建自己的服务器,新建文件夹rongcloud-server,在命令行 rongcloud-server 下输入npm install rongcloud-sdk

七、在 rongcloud-server 下新建 index.js 文件,内容如下

var http = require('http');
var rongcloudSDK = require( 'rongcloud-sdk' );
rongcloudSDK.init( 'APP_KEY', 'APP_SECRET' );
http.createServer(function (req, res) {
    rongcloudSDK.user.getToken( '0001', 'Lance', 'http://www.gravatar.com/avatar/629497a2072fbfdbde466141b2888c42?s=82&d=wavatar', function( err, resultText ) {
        var result;
        if(err) {
            result = JSON.stringify(err);
        } else {
            var obj = JSON.parse(resultText);
            result = {'code':200, 'result':{'id':obj.userId, 'token':obj.token, 'username':'Lance','portrait':'http://www.gravatar.com/avatar/629497a2072fbfdbde466141b2888c42?s=82&d=wavatar'}};
        }
        res.writeHead(200, {'Content-Type': 'application/json'});
        res.end(JSON.stringify(result));
    });
}).listen(8888);

八、更改原有的登录,打开 rongcloud/www/js/services.js 将 220~227 行替换为如下

    var req = {
             method: "GET",
             url: 'http:// [ IP ADDRESS ] :8888',
         };
    return $http(req);

九、处理插件,打开 rongcloud/platforms/android/src/org/apache/cordova/media/AudioPlayer.java ,将 startRecording 中 case NONE: 替换为

this.audioFile = file;
this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
this.recorder.setAudioSamplingRate(8000);
this.recorder.setAudioEncodingBitRate(7950);
this.recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); 
this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
this.recorder.setOutputFile(this.tempFile);
try {
    this.recorder.prepare();
    this.recorder.start();
    this.setState(STATE.MEDIA_RUNNING);
    return;
} catch (IllegalStateException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
sendErrorStatus(MEDIA_ERR_ABORTED);
break;

十、将其它 Ionic 程序中的 resource 文件夹拷贝到 rongcloud 文件夹下

十一、将 rongcloud/www/js/Util.js 中的 _appKey 更改为申请的 App Key

十一、在命令行中 rongcloud-server 文件夹内执行 node index.js

十二、在命令行中rongcloud 文件夹内执行 ionic run android

源文件下载

链接: https://pan.baidu.com/s/1i4BHP5N 密码: id35

欢迎加微信探讨,微信验证申请请填写博客标题

陈志成

继续阅读此作者的更多文章