对于安卓开发者来说,Cordova 是一个不错的选择,开发效率高,性能也可以满足绝大部分的场景。融云是比较早的聊天解决方案,提供了 Cordova 插件和例子,但是已经好久没有更新,这里是融云 Cordova 例子的运行过程。\n\n使用阅读本文之前,请先注册融云的开发者帐号并申请创建 App,创建 App 后,可以在开发者后台获取 App Key 和 App Secret 用于开发。\n\n需要准备的环境,Java、Javac、Python 2.x、Node、Npm、Android开发环境、C、C++编译环境、Node-gyp。\n\n一、安装 Cordova `npm install -g cordova`\n\n二、安装 Ionic,由于 Ionic 最新版本为3.6,我们需要使用低版本`npm install -g ionic@2.0.0`\n\n三、下载融云 Cordova 官方例子,[https://github.com/rongcloud/cordova-plugin-rongcloud-im-demo/archive/master.zip](https://github.com/rongcloud/cordova-plugin-rongcloud-im-demo/archive/master.zip),下载后解压缩\n\n四、新建空的 Ionic 项目,在命令行中输入`ionic start rongcloud blank`,由于 Windows 搭建编译环境比较复杂,且不支持较深的目录结构,建议在 Ubuntu 下进行 Node 开发,也可在\n Ubuntu 下执行完四、五命令后将整个目录拷贝到 Windows 系统下继续开发\n\n五、将 rongcloud 内的 packages.json 和 www 文件夹删除,将 cordova-plugin-rongcloud-im-demo 内的 packages.json 和 www 文件夹拷贝到 rongcloud 文件夹内,在命令行 rongcloud 下输入,`ionic state restore`\n\n六、由于 http://webim.demo.rong.io/ 已不可用,需要搭建自己的服务器,新建文件夹rongcloud-server,在命令行 rongcloud-server 下输入`npm install rongcloud-sdk`\n\n七、在 rongcloud-server 下新建 index.js 文件,内容如下\n\n    var http = require('http');\n    var rongcloudSDK = require( 'rongcloud-sdk' );\n    rongcloudSDK.init( 'APP_KEY', 'APP_SECRET' );\n    http.createServer(function (req, res) {\n        rongcloudSDK.user.getToken( '0001', 'Lance', 'http://www.gravatar.com/avatar/629497a2072fbfdbde466141b2888c42?s=82&d=wavatar', function( err, resultText ) {\n            var result;\n            if(err) {\n                result = JSON.stringify(err);\n            } else {\n                var obj = JSON.parse(resultText);\n                result = {'code':200, 'result':{'id':obj.userId, 'token':obj.token, 'username':'Lance','portrait':'http://www.gravatar.com/avatar/629497a2072fbfdbde466141b2888c42?s=82&d=wavatar'}};\n            }\n            res.writeHead(200, {'Content-Type': 'application/json'});\n            res.end(JSON.stringify(result));\n        });\n    }).listen(8888);\n\n八、更改原有的登录,打开 rongcloud/www/js/services.js 将 220~227 行替换为如下\n\n        var req = {\n                 method: \"GET\",\n                 url: 'http:// [ IP ADDRESS ] :8888',\n             };\n        return $http(req);\n\n九、处理插件,打开\n rongcloud/platforms/android/src/org/apache/cordova/media/AudioPlayer.java ,将\n startRecording 中 case NONE: 替换为\n\n    this.audioFile = file;\n    this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);\n    this.recorder.setAudioSamplingRate(8000);\n    this.recorder.setAudioEncodingBitRate(7950);\n    this.recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); \n    this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);\n    this.recorder.setOutputFile(this.tempFile);\n    try {\n        this.recorder.prepare();\n        this.recorder.start();\n        this.setState(STATE.MEDIA_RUNNING);\n        return;\n    } catch (IllegalStateException e) {\n        e.printStackTrace();\n    } catch (IOException e) {\n        e.printStackTrace();\n    }\n    sendErrorStatus(MEDIA_ERR_ABORTED);\n    break;\n\n十、将其它 Ionic 程序中的 resource 文件夹拷贝到 rongcloud 文件夹下\n\n十一、将 rongcloud/www/js/Util.js 中的 _appKey 更改为申请的 App Key\n\n十一、在命令行中 rongcloud-server 文件夹内执行 `node index.js`\n\n十二、在命令行中rongcloud 文件夹内执行 `ionic run android`\n\n源文件下载\n\n链接: https://pan.baidu.com/s/1i4BHP5N 密码: id35\n\n欢迎加微信探讨,微信验证申请请填写博客标题\n![](/content/images/2017/08/webwxgetmsgimg.jpg)",            "html": "<p>对于安卓开发者来说,Cordova 是一个不错的选择,开发效率高,性能也可以满足绝大部分的场景。融云是比较早的聊天解决方案,提供了 Cordova 插件和例子,但是已经好久没有更新,这里是融云 Cordova 例子的运行过程。</p>\n\n<p>使用阅读本文之前,请先注册融云的开发者帐号并申请创建 App,创建 App 后,可以在开发者后台获取 App Key 和 App Secret 用于开发。</p>\n\n<p>需要准备的环境,Java、Javac、Python 2.x、Node、Npm、Android开发环境、C、C++编译环境、Node-gyp。</p>\n\n<p>一、安装 Cordova <code>npm install -g cordova</code></p>\n\n<p>二、安装 Ionic,由于 Ionic 最新版本为3.6,我们需要使用低版本<code>npm install -g ionic@2.0.0</code></p>\n\n<p>三、下载融云 Cordova 官方例子,<a href=\"https://github.com/rongcloud/cordova-plugin-rongcloud-im-demo/archive/master.zip\">https://github.com/rongcloud/cordova-plugin-rongcloud-im-demo/archive/master.zip</a>,下载后解压缩</p>\n\n<p>四、新建空的 Ionic 项目,在命令行中输入<code>ionic start rongcloud blank</code>,由于 Windows 搭建编译环境比较复杂,且不支持较深的目录结构,建议在 Ubuntu 下进行 Node 开发,也可在\n Ubuntu 下执行完四、五命令后将整个目录拷贝到 Windows 系统下继续开发</p>\n\n<p>五、将 rongcloud 内的 packages.json 和 www 文件夹删除,将 cordova-plugin-rongcloud-im-demo 内的 packages.json 和 www 文件夹拷贝到 rongcloud 文件夹内,在命令行 rongcloud 下输入,<code>ionic state restore</code></p>\n\n<p>六、由于 <a href=\"http://webim.demo.rong.io/\">http://webim.demo.rong.io/</a> 已不可用,需要搭建自己的服务器,新建文件夹rongcloud-server,在命令行 rongcloud-server 下输入<code>npm install rongcloud-sdk</code></p>\n\n<p>七、在 rongcloud-server 下新建 index.js 文件,内容如下</p>\n\n<pre><code>var http = require('http');\nvar rongcloudSDK = require( 'rongcloud-sdk' );\nrongcloudSDK.init( 'APP_KEY', 'APP_SECRET' );\nhttp.createServer(function (req, res) {\n    rongcloudSDK.user.getToken( '0001', 'Lance', 'http://www.gravatar.com/avatar/629497a2072fbfdbde466141b2888c42?s=82&amp;d=wavatar', function( err, resultText ) {\n        var result;\n        if(err) {\n            result = JSON.stringify(err);\n        } else {\n            var obj = JSON.parse(resultText);\n            result = {'code':200, 'result':{'id':obj.userId, 'token':obj.token, 'username':'Lance','portrait':'http://www.gravatar.com/avatar/629497a2072fbfdbde466141b2888c42?s=82&amp;d=wavatar'}};\n        }\n        res.writeHead(200, {'Content-Type': 'application/json'});\n        res.end(JSON.stringify(result));\n    });\n}).listen(8888);\n</code></pre>\n\n<p>八、更改原有的登录,打开 rongcloud/www/js/services.js 将 220~227 行替换为如下</p>\n\n<pre><code>    var req = {\n             method: \"GET\",\n             url: 'http:// [ IP ADDRESS ] :8888',\n         };\n    return $http(req);\n</code></pre>\n\n<p>九、处理插件,打开\n rongcloud/platforms/android/src/org/apache/cordova/media/AudioPlayer.java ,将\n startRecording 中 case NONE: 替换为</p>\n\n<pre><code>this.audioFile = file;\nthis.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);\nthis.recorder.setAudioSamplingRate(8000);\nthis.recorder.setAudioEncodingBitRate(7950);\nthis.recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); \nthis.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);\nthis.recorder.setOutputFile(this.tempFile);\ntry {\n    this.recorder.prepare();\n    this.recorder.start();\n    this.setState(STATE.MEDIA_RUNNING);\n    return;\n} catch (IllegalStateException e) {\n    e.printStackTrace();\n} catch (IOException e) {\n    e.printStackTrace();\n}\nsendErrorStatus(MEDIA_ERR_ABORTED);\nbreak;\n</code></pre>\n\n<p>十、将其它 Ionic 程序中的 resource 文件夹拷贝到 rongcloud 文件夹下</p>\n\n<p>十一、将 rongcloud/www/js/Util.js 中的 _appKey 更改为申请的 App Key</p>\n\n<p>十一、在命令行中 rongcloud-server 文件夹内执行 <code>node index.js</code></p>\n\n<p>十二、在命令行中rongcloud 文件夹内执行 <code>ionic run android</code></p>\n\n<p>源文件下载</p>\n\n<p>链接: <a href=\"https://pan.baidu.com/s/1i4BHP5N\">https://pan.baidu.com/s/1i4BHP5N</a> 密码: id35</p>\n\n<p>欢迎加微信探讨,微信验证申请请填写博客标题\n<img src=\"/content/images/2017/08/webwxgetmsgimg.jpg\" alt=\"\" /></p>