一、首先,进入融云官网www.rongcloud.cn,注册一个账号,这个不用说,你们就懂的。
二、进入控制台,新建一个项目,这个不详细讲,可以看一下他们的api,重点是代码部分。
进入新建的应用“简聊”
这样就可以查看APPKey 何APP Secret 其它暂时可以不用看,我们本次的目标只是实现项目的搭建,及获取token,连聊天的界面都不会有的。
下载融云的IMKit 包含聊天UI和聊天核心控件
导入到eclipse 并使工程依赖他
接下来,主要配置好AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.chat.simplechat" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="13" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取机型信息权限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 录音 --> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" /> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <application android:name=".SCApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light" > <activity android:name="com.chat.simplechat.activity.MainActivity" android:label="@string/app_name" > </activity> <activity android:name=".activity.SplashActivity" android:label="@string/app_name" android:theme="@style/Theme.Start" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 必选: SDK 核心功能 --> <!-- 第三方相关,向第三方推送服务请求 token 的服务 --> <service android:name="io.rong.push.core.PushRegistrationService" android:exported="false" > </service> <!-- 处理 push 消息相关的服务 --> <service android:name="io.rong.push.core.MessageHandleService" android:exported="true" > </service> <!-- push服务 --> <service android:name="io.rong.push.PushService" android:exported="false" android:process="io.rong.push" > <!-- push进程,可以改名 --> </service> <!-- push 相关事件接收器 --> <receiver android:name="io.rong.push.PushReceiver" android:process="io.rong.push" > <!-- 此处进程可以改名,名称需要和PushService所在进程统一 --> <!-- 心跳事件 --> <intent-filter> <action android:name="io.rong.push.intent.action.HEART_BEAT" /> </intent-filter> <!-- 网络变动事件 --> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <!-- 部分用户事件 --> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> </intent-filter> </receiver> <!-- 必选: SDK 核心功能 --> <!-- imlib config begin --> <meta-data android:name="RONG_CLOUD_APP_KEY" android:value="pkfcgjstfp8j8" /> <service android:name="io.rong.imlib.ipc.RongService" android:exported="true" android:process=":ipc" /> <service android:name="io.rong.imlib.ReConnectService" /> <receiver android:name="io.rong.imlib.ConnectChangeReceiver" /> <receiver android:name="io.rong.imlib.HeartbeatReceiver" android:process=":ipc" /> <!-- imlib config end --> </application> </manifest>
然后自己继承一个Application ,在里面实现初始化
package com.chat.simplechat; import org.xutils.x; import io.rong.imkit.RongIM; import android.app.ActivityManager; import android.app.Application; import android.content.Context; import android.widget.Toast; public class SCApplication extends Application { private static Context content; @Override public void onCreate() { super.onCreate(); x.Ext.init(this); content = getApplicationContext(); /** * OnCreate 会被多个进程重入,这段保护代码,确保只有您需要使用 RongIM 的进程和 Push 进程执行了 init。 * io.rong.push 为融云 push 进程名称,不可修改。 */ if (getApplicationInfo().packageName .equals(getCurProcessName(getApplicationContext())) || "io.rong.push" .equals(getCurProcessName(getApplicationContext()))) { /** * IMKit SDK调用第一步 初始化 */ RongIM.init(this); } } public static Context getObjectContext() { return content; } /** * 获得当前进程的名字 * * @param context * @return 进程号 */ public static String getCurProcessName(Context context) { int pid = android.os.Process.myPid(); ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningAppProcessInfo appProcess : activityManager .getRunningAppProcesses()) { if (appProcess.pid == pid) { return appProcess.processName; } } return null; } }
然后记得把继承的APPlication的名字配置到AndroidManifest.xml。
到目前,我们已经把项目搭建好了,那么还有很重要的就是获取Token和连接服务器,只把核心代码贴出来,会把源码放在最后,可以下载查看详细代码。
public static RequestParams addHeader(RequestParams params) { Random r = new Random(); String Nonce = (r.nextInt(10000) + 10000) + ""; String Timestamp = (System.currentTimeMillis() / 1000) + ""; params.addHeader("App-Key", RY_APP_KEY); params.addHeader("Nonce", Nonce); params.addHeader("Timestamp", Timestamp); params.addHeader("Signature", MD5.encryptToSHA(RY_APP_SECRET + Nonce + Timestamp)); return params; }
public static void getToken(final String id, final String username) { RequestParams params = new RequestParams( "https://api.cn.ronghub.com/user/getToken.json"); addHeader(params); params.addBodyParameter("userId", id); params.addBodyParameter("name", username); x.http().post(params, new CommonCallback<String>() { @Override public void onCancelled(CancelledException arg0) { } @Override public void onError(Throwable arg0, boolean arg1) { EBmessage eb = new EBmessage(); eb.setStatus(false); eb.setMessage(arg0.toString()); eb.setFrom("getToken"); EventBus.getDefault().post(eb); } @Override public void onFinished() { } @Override public void onSuccess(String s) { TokenMod mod = new Gson().fromJson(s, TokenMod.class); Editor editor = getEditor(); editor.putString("username", username); editor.putString("userpass", mod.getUserId()); editor.putString("token", mod.getToken()); editor.commit(); EBmessage eb = new EBmessage(); eb.setStatus(true); eb.setMessage(mod.getToken()); eb.setFrom("getToken"); EventBus.getDefault().post(eb); } }); } /** * 建立与融云服务器的连接 * * @param token */ public static void connect(String token, Context context) { if (context.getApplicationInfo().packageName.equals(SCApplication .getCurProcessName(context.getApplicationContext()))) { /** * IMKit SDK调用第二步,建立与服务器的连接 */ RongIM.connect(token, new RongIMClient.ConnectCallback() { /** * Token 错误,在线上环境下主要是因为 Token 已经过期,您需要向 App Server 重新请求一个新的 * Token */ @Override public void onTokenIncorrect() { Log.d("LoginActivity", "--onTokenIncorrect"); } /** * 连接融云成功 * * @param userid * 当前 token */ @Override public void onSuccess(String userid) { EBmessage eb = new EBmessage(); eb.setStatus(true); eb.setMessage("success"); eb.setFrom("connect"); EventBus.getDefault().post(eb); Log.d("LoginActivity", "--onSuccess" + userid); } /** * 连接融云失败 * * @param errorCode * 错误码,可到官网 查看错误码对应的注释 */ @Override public void onError(RongIMClient.ErrorCode errorCode) { Log.d("LoginActivity", "--onError" + errorCode); } }); } }
demo下载地址http://download.csdn.net/detail/wangyang00700/9623568
相关推荐
解决:集成沙雕融云IM在Application注册后报token is empty,并崩溃的问题。
uniapp对接融云IM聊天,带文档具体实现的接口有: 消息监听,消息(撤回)回执监听,分⻚获取聊天记录,获取所有会话未读数,获取未读数,免打扰时间,输⼊状态消息,单多人的语音视频通话,等等。 有demo可用。
android七牛云本地获取token,不需要从业务服务器上获取和删除服务器上文件.
Laravel API Passport认证的安装与配置和获取token及刷新accesstoken
这是一款用于谷歌浏览器端的插件,如果您公司项目使用的是前后端分离技术,例如前端使用的是VUE,后端开发人员就可以安装该插件,写入相应的登录规则后即可在浏览器动态获取token,强烈推荐各位使用!
AliOssServiceImpl java获取阿里STS token AliOSS获取token 阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的...
文件对象管理器(集成MinIO、阿里云OSS基本操作及临时token获取)
本插件主要是实现对接阿里云的语音合成webapi 主要功能 获取token语音合成 帮助正在做,或者即将做的同学踩坑-感谢下载
获取米家设备 token,总共3款软件,两款 windows 软件跟一款修改过的米家APP
浙江政府微应用接口Postman调用脚本,获取Token、获取用户信息, 直接使用Postman导入此文件,修改Pre脚本里面的Ak和Sk, 按需要修改接口的st(即ticket)和token的值, 即可进行接口测试
微信接口获取token失败40125错误,是我遇到的获取token接口的报40125错误的一个,
JWT格式的Token动态库封装,包括获取token,验证token,获取token中保存的内容,验证了Token是否正确,验证了Token的ip是否相同,验证了Token的过期时间
美团扫码获取Token-v1.1.exe
一直想通过android客户端删除和上传文件到七牛,但是删除文件android/java版本的一直没有找到,所以只能自己动手写了,本人测试删除成功。
七牛上传图片获取token前后台JS+C#
获取token值的python脚本
一个上传文件的Demo可用于移动端,包含前后端代码,解压直接在后端填写自己的accessKey、secretKey、bucket、domain之即实现客户端直接上传文件到自己的七牛云空间,前后端代码都有,有详细介绍。拿走拿走!
输入米家账号密码,即可获取到米家设备 token 等各种信息
通过winform使用httpclient客户端调用webApi接口,api使用oauth2.0权限控制,调用接口需要进行token获取认证、