android项目实践之融云聊天服务端与客户端的实现

   最近研究了即时通讯,当然用户是第三方IM。融云和网易云信在市场上的使用用户都挺多,但是我还是选择了融云并且研究了一番,也终于有些成果并跟大家分享。下面是效果图。

这里写图片描述
这里写图片描述

一、开发前的准备

首先我们肯定是要去登录融云的官网去下载相关的SDK,并且创建相应的应用获取APP Key 和 App Secret。
这里写图片描述

最简单的聊天功能下载SDK只需要IMKit 与 IMLib就能实现。同时可以选一些附加功能这个根据自己的需求选择就行。这里的操作都很简单,现在讲项目这一块。
1、我们最初把SDK下载完之后选择两个库导入as中。步骤:file -> new -> import Module ->找到两个库并导入。导入重新构建后一定要记得在app项目的build.gradle中加上compile project(‘:IMKit’) 进行关联。
2、把上面选择需要功能的jar 和 os文件 (下载的SDK中有) 复制到app的Lib中。
这里写图片描述

3、在IMLib中的AndroidManifest文件中填入自己创建应用的App Key。

<application>

        <!-- imlib config begin -->
        <meta-data
            android:name="RONG_CLOUD_APP_KEY"
            android:value="你的app key" />

4、初始化融云SDK。建一个类继承Application(android启动先走Application)在OnCreate()方法中初始化,初始化语句:RongIM.init(this);。同时AndroidManifest中application取名为App

<application
        android:name=".App"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
二、服务端连接融云获取Token

1、编写一个简单的测试界面。
这里写图片描述

2、我们来梳理一下思路:随便输入一个id -> 点击返回值按钮 -> 请求自己的服务器并传入id -> 自己的服务器把请求融云服务器并传入id -> 融云服务器进行响应并返回id对应的Token值给自己的服务器 -> 自己的服务器把ToKen返回给客户端 -> 客户端得到Token使用RongIM.connect()方法就可以连接融云服务器。希望下面的图能够清晰的帮你理解。
这里写图片描述
3、点击按钮进行请求自己的服务器,同时服务端代码的实现。

客户端请求:
private void postId(final String id) {
        //创建一个OkHttpClient对象
        OkHttpClient okHttpClient = new OkHttpClient();
        FormBody body = new FormBody.Builder()
                .add("id", id)

                .build();
        Request request = new Request.Builder().post(body).url(API.GET_TOKEN).build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            //请求失败时调用
            @Override
            public void onFailure(Call call, IOException e) {
                Log.i(TAG, "onFailure: " + e);
            }
            //请求成功时调用
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String str = response.body().string();
                userInfo = JSON.parseObject(str, UserInfo.class);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(LoginActivity.this, "str" + str + ", token:" + userInfo.getToken(), Toast.LENGTH_SHORT).show();
                        editor.putString("loginToken", userInfo.getToken());
                        btnConn.setVisibility(View.VISIBLE);
                    }
                });
            }
        });
    }
服务端相应:
        //获取用户token
        @ResponseBody
        @RequestMapping(value = "/getToken")
        String getToken(UserItem uEntity, String id){

            String token = RongUtils.getToken(id);

            return token;
        }

还有请求融云服务器的工具类在下面的Demo中会有就不一一贴出来。

4、通过获取的Token与融云服务器连接。

if (getApplicationInfo().packageName.equals(App.getCurProcessName(getApplicationContext()))) {
                    RongIM.connect(userInfo.getToken(), new RongIMClient.ConnectCallback() {
                        @Override
                        public void onTokenIncorrect() {
                        }
                        @Override
                        public void onSuccess(String userid) {
                            //userid,是我们在申请token时填入的userid
                            System.out.println("========userid" + userid);
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(LoginActivity.this, "链接服务器成功!", Toast.LENGTH_SHORT).show();
                                    editor.putString("loginToken", userInfo.getToken());
                                }
                            });
                        }
                        @Override
                        public void onError(RongIMClient.ErrorCode errorCode) {
                        }
                    });
                }

接下来就可以通过写一个界面以及功能,其实融云封装的很好,阅读文档基本就能成功。下面就贴代码吧。。。

主界面MainActivity:

package com.song.rongyundemo;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAd
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值