关于融云的单聊通讯那点事

   日期:2020-11-10     浏览:85    评论:0    
核心提示:这里写自定义目录标题关于融云的单聊通讯那点事用了两天两夜做出的是最简单的事how (怎么实现)1.合理[借助融云官方文档](https://docs.rongcloud.cn/v4/views/im/ui/guide/private/intro/private.html)2.初始化相关信息在activity中调用application实现初始化实现初始化后我们就可以实现相关函数的调用怎么套用?实现融云提供给的消息接收与发送功能以上就是我个人对整个项目的开发(谈不上项目,比较low)但是还是实现了基本的通讯

这里写自定义目录标题

  • 关于融云的单聊通讯那点事
    • 用了两天两夜做出的是最简单的事
    • how (怎么实现)
    • 1.合理[借助融云官方文档](https://docs.rongcloud.cn/v4/views/im/ui/guide/private/intro/private.html)
    • 2.初始化相关信息
    • 在activity中调用application实现初始化
    • 实现初始化后我们就可以实现相关函数的调用
    • 怎么套用?
    • 实现融云提供给的消息接收与发送功能
    • 以上就是我个人对整个项目的开发(谈不上项目,比较low)但是还是实现了基本的通讯

关于融云的单聊通讯那点事

最近刚学Android基础知识,觉得必须得做点什么能用的东西,然后想到了去做一个小的通讯APP,于是我查阅了很多blog,最终锁定了融云

用了两天两夜做出的是最简单的事

下面是实例图

然后是项目的结构

how (怎么实现)

1.合理借助融云官方文档

怎么个合理法
1.一定要看清开发环境
不然你无法集成它给你的sdk
2.只能使用远程maven集成(融云现在通讯功能下我是没有找到SDK文件的,它给你的连接是个demo没有它给你的文档所以只能使用maven集成)
3.集成代码

直接去按官方开发文档即可

2.初始化相关信息

官方推荐的是在application中初始化相关信息,实际上去哪都还可以!

import android.app.Application;

public class MyApplication extends Application {
    public String getAppKey() {
        return appKey;
    }

    public void setAppKey(String appKey) {
        this.appKey = appKey;
    }

    private String appKey;

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    private String token;
    @Override
    public void onCreate() {
        super.onCreate();

    }
}

这是我在Application中写的代码,用来初始化信息而已,由于我没有去实现多次获取token,所以我是去官方API中调用的api函数直接获取然后写死的(不建议这样做)

在activity中调用application实现初始化

package com.example.justtalkwithme;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

import io.rong.imkit.RongIM;
import io.rong.imlib.RongIMClient;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化. 建议在 Application 中进行初始化.
        MyApplication application=new MyApplication();
        application.setAppKey("官方key");
        RongIM.init(this, application.getAppKey());
        application.setToken("官方token需要自己获取的");
        RongIM.connect(application.getToken(), new RongIMClient.ConnectCallback() {
            @Override
            public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus code) {
                //消息数据库打开,可以进入到主页面
            }

            @Override
            public void onSuccess(String s) {
                //连接成功
                Toast.makeText(MainActivity.this,"连接成功",Toast.LENGTH_LONG).show();
                Intent intent=new Intent(MainActivity.this, ConversationActivity.class);
                startActivity(intent);
            }

            @Override
            public void onError(RongIMClient.ConnectionErrorCode errorCode) {
                if(errorCode.equals(RongIMClient.ConnectionErrorCode.RC_CONN_TOKEN_INCORRECT)) {
                    //从 APP 服务获取新 token,并重连
                } else {
                    //无法连接 IM 服务器,请根据相应的错误码作出对应处理
                    Toast.makeText(MainActivity.this,"连接失败",Toast.LENGTH_LONG).show();
                }
            }
        });


    }
}

实现初始化后我们就可以实现相关函数的调用

由于我一直没搞明白怎么去调用融云官方UI组件所以我就去各种blog中找了一个类似QQ的聊天UI组件(此处转载一个大佬的的文章)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/eastmoon502136/article/details/50650350

我就是直接套用了他的UI组件

怎么套用?

首先在他的blog中获取源码,然后偷天换日
1.复制他所有的drawable中的图片到自己的drawable中
2.复制他所有的layout布局到自己的layout中
3.复制他所有的除Mainactivity.java的java文件到自己的项目中(建议用先用Android studio打开他的项目然后Ctrl +C 和Ctrl +V)这样Android会自动修改默认包避免出错
4.新建一个ConversitionActivity类然后将他的Mainactivity套用到自己的这个新建类中以便于我的Mainactivity在连接成功后能实现跳转
(实现跳转必须得到mainifest.xml中注册活动)
以下是我的那个xml文件,你自己不可直接复制,需要修改包名

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.justtalkwithme">
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="MediaStore.Images.Media.INTERNAL_CONTENT_URI"/>
    <uses-permission android:name="MediaStore.Images.Media.EXTERNAL_CONTENT_URI"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <application
        android:allowBackup="true"
        android:name=".MyApplication"
        android:icon="@drawable/yi"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".ConversationActivity">

        </activity>
    </application>

</manifest>

实现融云提供给的消息接收与发送功能

官方文档明确指出响应的函数

将该函数插入到UI主件中的自己编好的ConversationActivity类中

消息发送已经实现此处已经完成我做的项目的99/100了
还剩一个消息接收
因为我比较赶时间就没有去设置什么特别的消息接收处理,默认的也是开发文档的自动接收,但是消息的接收主要分两步(个人看法)
1.监听,官方开发文档已经给出
2.完成监听后对接收到的消息的处理(我比较懒只设置了对实时消息的处理)
代码(实现了收发消息)

Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE;
                    String targetId = "**自己在api中设置好的*";
                    messagex = content_send;
                    TextMessage messageContent = TextMessage.obtain(messagex);
                    Message message = Message.obtain(targetId, conversationType, messageContent);
                    RongIM.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() {
                        
                        @Override
                        public void onAttached(Message message) {
                            Toast.makeText(ConversationActivity.this, "消息已储存到数据库", Toast.LENGTH_LONG).show();
                        }

                        
                        @Override
                        public void onSuccess(Message message) {
                            Toast.makeText(ConversationActivity.this, "消息发送成功", Toast.LENGTH_LONG).show();
                        }

                        
                        @Override
                        public void onError(Message message, RongIMClient.ErrorCode errorCode) {
                            Toast.makeText(ConversationActivity.this, "消息发送失败", Toast.LENGTH_LONG).show();
                        }
                    });

                }
            }
        });
        RongIM.setConnectionStatusListener(new RongIMClient.ConnectionStatusListener() {
            
            @Override
            public void onChanged(ConnectionStatus status) {
                Toast.makeText(ConversationActivity.this, status.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
        RongIM.setOnReceiveMessageListener(new RongIMClient.OnReceiveMessageWrapperListener() {

            
            @Override
            public boolean onReceived(final Message message, final int left, boolean hasPackage, boolean offline) {
                Toast.makeText(ConversationActivity.this, "正在接受消息", Toast.LENGTH_LONG).show();
                rongMsg = (TextMessage) message.getContent();
                message_receive =rongMsg.getContent();
                Msg msg_receive = new Msg(message_receive, Msg.TYPE_RECEIVED);
                msgList.add(msg_receive);
                return true;
            }
        });

以上就是我个人对整个项目的开发(谈不上项目,比较low)但是还是实现了基本的通讯

使用源码的时候不要直接open整个项目而应该复制APP中的main文件把自己新建的项目中的main文件替换
源码下载

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服