Android 基于环信即时云的IM开发

假如我们想要快速实现一个即时通讯功能,最快捷的方法就是借助网络上的即时云服务。下面我们讲述一下如何利用环信实现一个IM功能。

首先下载环信的SDK,也就是几个库,把demo里面的HXSDKHelper.java,HXSDKModel.java,DefaultHXSDKModel.java,HXPreferenceUtils.java四个文件复制到新建的工程下。稍作修改。

首先在Application中实现初始化SDK

public static DemoHXSDKHelper hxSDKHelper = new DemoHXSDKHelper();

    @Override
    public void onCreate() {
        super.onCreate();
        applicationContext = this;
        instance = this;
        hxSDKHelper.onInit(applicationContext);
    }

然后在Activity中登陆

        EMChatManager.getInstance().login("123456", "123456", new EMCallBack() {

            @Override
            public void onSuccess() {

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        Toast.makeText(context, "登陆成功!", Toast.LENGTH_LONG).show();
                    }
                });
            };

            @Override
            public void onProgress(int progress, String status) {
            }

            @Override
            public void onError(final int code, final String message) {

                runOnUiThread(new Runnable() {
                    public void run() {

                        Toast.makeText(getApplicationContext(), "登陆失败" + message, Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });

调用函数进行信息的发送

String string = editText3.getText().toString();
                EMMessage message = EMMessage.createSendMessage(EMMessage.Type.TXT);
                String toNum = editText.getText().toString();
                if (toNum.equals("1425193776689")) {
                    message.setChatType(ChatType.GroupChat);
                }

                TextMessageBody txtBody = new TextMessageBody(string);
                message.addBody(txtBody);               

                message.setReceipt(toNum);
                try {
                    EMChatManager.getInstance().sendMessage(message);
                } catch (EaseMobException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }                       

在接收信息时,只需要监听广播就可以

// 注册接收消息广播
        receiver = new NewMessageBroadcastReceiver();
        IntentFilter intentFilter = new IntentFilter(EMChatManager.getInstance().getNewMessageBroadcastAction());
        intentFilter.setPriority(5);
        registerReceiver(receiver, intentFilter);
    private class NewMessageBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            // 记得把广播给终结掉
            abortBroadcast();
            String username = intent.getStringExtra("from");
            String msgId    = intent.getStringExtra("msgid");
            // 收到这个广播的时候,message已经在db和内存里了,可以通过id获取mesage对象
            final EMMessage message = EMChatManager.getInstance().getMessage(msgId);
            final TextMessageBody txtBody = (TextMessageBody)message.getBody();
            Toast.makeText(getApplicationContext(), "text message from:" + message.getFrom() + " text:" + txtBody.getMessage() + " \n\r", Toast.LENGTH_LONG).show();
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    editText2.setText("from:" + message.getFrom() + "\ntext:" + txtBody.getMessage() + " \n");
                }
            });
        }

    }

这样就可以进行收发。

由于环信的库比较大,编译完之后可执行文件有5M那么大。

时间: 2024-10-25 21:23:31

Android 基于环信即时云的IM开发的相关文章

环信即时通讯单聊集成,添加好友,实现单聊

前段时间由于项目需要,了解一下环信即时通讯,然后自己通过查资料写了一个基于环信的单聊demo,一下是源码,希望可以帮助到需要的小伙伴. 首先,我们要去环信官网注册账号,这个我就不多说了,注册完登录,创建应用,新建两个测试IM用户, 这里主要用到的是应用标示(Appkey) 好了,在环信官网下载对应的sdk,这个不多说了,最好下载一个文档,里面讲的很详细的. 好了,一下是源码 AppManager.java public class AppManager { private static Stac

Android基于XMPP的即时通讯2-文件传输

本文是在上一篇博文Android基于XMPP的即时通讯1-基本对话的基础上,添加新的功能,文件传输 1.初始化文件传输管理类 public static FileTransferManager getFileTransferManager() { if (fileManager == null) { ServiceDiscoveryManager sdManager = ServiceDiscoveryManager .getInstanceFor(connection); if (sdMana

Android基于XMPP的即时通讯3-表情发送

这篇博文主要讲表情发送的一些东西. 参考:Android基于XMPP的即时通讯1-基本对话 1.准备好资源文件 采用的是emoji的表情,我打包好了,下载地址:http://files.cnblogs.com/files/pear-lemon/drawable.zip 2.表情布局文件layout_send_emotion.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmln

环信即时聊天步骤

1:注册账号 2:下载sdk 3:导入modle EaseUI 4:讲model加入到主项目 5:登陆功能:代码如下: EMClient.getInstance().login(userName,password,new EMCallBack() {//回调 @Override public void onSuccess() { EMClient.getInstance().groupManager().loadAllGroups(); EMClient.getInstance().chatMa

Android基于xmpp的即时通讯应用

xmpp是一个通信协议.因为这是个开放的协议,为了节俭开发成本,很多即时应用都采用了这个协议.Android上最常用的组合asmack +openfire.Asmack是smack的android版,是对xmpp协议进行了封装,并提供了丰富的api,简化了操作.Openfire是一个开源的IM服务器,基于Xmpp实现.换句话说使用xmpp开发即时通讯应用的话,服务器端已经开发好了,就是openfire. 现在我做的一个android应用就是采用asmack+openfire.说实在的,xmpp协

iOS环信即时聊天

一.注册登陆环形开发者账号,并且创建应用,获得对应的AppKey 二.根据实际情况制作并上传推送证书(开发环境推送证书sandbox,请选择 Apple Push Notification service SSL  / 生产环境证书production,请选择 Apple Push Notification service SSL ) 详细制作步骤属于iOS开发基本知识,这里不再做详细说明. 三.集成iOS 环信SDK.为了方便快速,这里我们直接使用Cocoapods集成 在终端cd到该工程跟目

环信即时通讯 —— IOS客户端集成

1.环信官网介绍 2.准备工作: 登录环信开发者账号并创建应用.制作并上传推送证书(开发.生产): 3.下载SDK:通过Cocoapods下载或到官网下载 ,对于Cocoapods下载: 不包含实时语音版本SDK(EaseMobClientSDKLite),引用时 #import <EaseMobSDK/EaseMob.h> pod 'EaseMobSDK', :git => 'https://github.com/easemob/sdk-ios-cocoapods.git'  包含实时

环信即时通讯 —— 消息、会话

1.消息EMMessage 环信支持文字.图片.位置.语音.视频.文件.透传.自定义八种消息构造.消息,即IM交互实体,在SDK中对应的类型是 **EMMessage**,EMMessage可以由多个符合<IEMMessageBody>协议的body组成,但是 推荐使用一个body. 2.消息构造 1> 设置消息的内容 文字消息: EMChatText *msgChat = [[EMChatText alloc] initWithText:@"要发送的消息"]; 图片

Android基于XMPP的即时通讯

闲暇之余,自己写了个简单的即时通讯,基于OpenFire服务器平台. 整个项目包括两个部分,一个是服务器端,一个是android手机端: 一.关于服务器端没什么好说的,下载安装配置即可 推荐下载带jar的程序安装,配置好java_jdk的可以使用压缩包解压安装 OpenFire下载地址:http://www.igniterealtime.org/downloads/index.jsp 顺便下载一个Spark,电脑端通讯,用于和你的安卓手机互发信息. 运行openFire截图 openfire的后