我的上一篇博客简要的介绍了一下我对即时通讯的一些尝试,后面还介绍了通过bmob实现即时通讯的方式,上一篇主要是对我的一些经验的分享,所以我只提取了很简要的部分讲解,考虑到一些读者可能难以理解,所以为帮助读者理解,这篇博客将手把手教学。
总的步骤如下:

  • 注册并创建应用
  • 获取应用的application id
  • 导入即时通讯sdk
  • 初始化sdk
  • 连接服务器
  • 发送消息
  • 接收消息

先给大家看看效果:

注册并创建应用

首先你去bmob平台注册一个开发者账号,流程很简单,不需要很严格的审查。
注册完成后,自行创建一个应用,填写的信息很简单,没有特殊要求。

获取应用的application id

点击进入应用 ->点击设置 ->查看application id 相信如图所示,复制一下这个application id 备用

导入即时通讯sdk

对于eclipse用户来说比较麻烦,需要自行下载demo中lib包,并导入并编译。而Android Studio用户只需做两步
Step 1:
在项目中的build.gradle中的repositories{}中添加 jcenter()和
maven { url “https://raw.github.com/bmob/bmob-android-sdk/master” }

Step 2:
在app中的build.gradle 中添加
compile ‘cn.bmob.android:bmob-im:2.0.6@aar’
compile ‘cn.bmob.android:bmob-sdk:3.5.5’
因为两者有集成包冲突还需要加上一个

packagingOptions {exclude 'META-INF/LICENSE'exclude 'META-INF/rxjava.properties'
}

结果如下图所示:

初始化sdk

集成好sdk后需要配置一些东西:
首先在你项目中的manifest中注册一些receiver和service

        <receiver android:name="cn.bmob.newim.core.ConnectChangeReceiver"><intent-filter><action android:name="cn.bmob.action.RECONNECT" /><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /><action android:name="android.intent.action.BOOT_COMPLETED" /><action android:name="android.intent.action.USER_PRESENT" /></intent-filter></receiver><service
            android:name="cn.bmob.newim.core.service.BmobIMService"android:process=":bmobcore" /><service
            android:name="cn.bmob.newim.core.service.NotifyService"android:process=":bmobcore" /><service android:name="cn.bmob.newim.core.service.ReConnectService" /><service android:name="cn.bmob.newim.core.service.HeartBeatService" />

并配置你的密匙:
这里的application id就是前面我们获取到的

   <meta-dataandroid:name="Bmob_APP_KEY"android:value="你自己的application id" />

并配置上一些基础的权限,包括网络权限、WiFi等权限

    <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

弄好了这些还需要在application中进行初始化,首先你要新建一个类集成application,
如图所示:

这里面那个BmobIM.registerDefaultMessageHandler(new ImMessageHandler());是注册消息接收类,不理解没关系,等下会讲。别忘记给把application在manifest中声明。

连接服务器

一些都准备就绪,现在开始连接服务器

  BmobIM.connect(et_connect_id.getText().toString(), new ConnectListener() {@Overridepublic void done(String s, BmobException e) {if (e == null){isConnect = true;Log.i("TAG","服务器连接成功");}else {Log.i("TAG",e.getMessage()+"  "+e.getErrorCode());}}});

通过以上代码就可以连接服务器。et_connect_id.getText().toString()传入的是你连接服务器的标识id,作为其他用户与你通信的标识。在你需要连接服务器的时候即可调用此代码

发送消息

连接完服务器后就可以进行消息的发送了。

   BmobIMUserInfo info =new BmobIMUserInfo();info.setAvatar("填写接收者的头像");info.setUserId(et_receiver_id.getText().toString());info.setName("填写接收者的名字");BmobIM.getInstance().startPrivateConversation(info, new ConversationListener() {@Overridepublic void done(BmobIMConversation c, BmobException e) {if(e==null){isOpenConversation = true;//在此跳转到聊天页面或者直接转化mBmobIMConversation=BmobIMConversation.obtain(BmobIMClient.getInstance(),c);tv_message.append("发送者:"+et_message.getText().toString()+"\n");BmobIMTextMessage msg =new BmobIMTextMessage();msg.setContent(et_message.getText().toString());mBmobIMConversation.sendMessage(msg, new MessageSendListener() {@Overridepublic void done(BmobIMMessage msg, BmobException e) {if (e != null) {et_message.setText("");}else{}}});}else{Toast.makeText(MainActivity.this, "开启会话出错", Toast.LENGTH_SHORT).show();}}});

在发送消息之前必须开启一个会话,会话需要传入的参数就是接受者的id、头像、昵称。打开成功后,还需通过BmobIMConversation.obtain将会话转化后才能进行消息的发送。发送代码已贴,其中et_message.getText().toString(),及是你发送消息的内容

接收消息

虽然把消息发出去了,但是你还是无法看到或者接受其他的消息,这时候我们需要集成一个消息接收类,进行消息的接收


public class ImMessageHandler extends BmobIMMessageHandler{@Overridepublic void onMessageReceive(MessageEvent messageEvent) {super.onMessageReceive(messageEvent);//在线消息MainActivity.tv_message.append("接收到:"+messageEvent.getMessage().getContent()+"\n");}@Overridepublic void onOfflineReceive(OfflineMessageEvent offlineMessageEvent) {super.onOfflineReceive(offlineMessageEvent);//离线消息}
}

这里自己新建一个类并集成BmobIMMessageHandler,便可接收到其他人发过来的消息。两个方法,读者自行处理数据。结合前面的初始化。把那个BmobIM注册的消息接收器改为你自己新建的类即可。按照步骤过来,这个简单的即时通讯就完成了,我写的这个demo代码量很少,我是直接把bmob的官方文档的主要内容抽离了,想更深层次的学习的,请自行查看官方文档。
附上demo,有用的请star,感谢

Android 通过bmob十分钟实现即时通讯相关推荐

  1. Android基于环信开发的即时通讯APP

    Android基于环信开发的即时通讯APP,源代码在Github上,GitHub地址为:https://github.com/PowerDos/BLChat ,希望能够帮到你们,下面是系统简介. 简介 ...

  2. Android后台保活实践总结:即时通讯应用无法根治的“顽疾”

    前言 Android进程和Service的保活,是困扰Android开发人员的一大顽疾.因涉及到省电和内存管理策略,各厂商基于自家的理解,在自已ROOM发布时都会对标准Android发行版作或多或少的 ...

  3. android 环信集成,Android Studio下的环信即时通讯简单集成

    环信即时通讯云是全球最大的即时通讯云 PaaS 平台,可以快速实现APP的即时通讯的功能,官方的DEMO是基于Eclipse开发的,对于新版本的Android Studio支持不太好,下面就简单说一下 ...

  4. android仿网易云音乐、即时通讯、bilibili、沙漏动画等源码

    Android精选源码 android仿网易云音乐安卓版源码 android开源即时通讯,实时传讯IM源码 android类似淘宝的商品详情页源码 android面向.艺术家.设计师等创意类作品源码 ...

  5. Android学习笔记--基于XMPP的即时通讯

    一.常见即时通讯实现 socket openfire+asmack 环信 信鸽 融云 二.XMPP优势 1. 开放性 XMPP协议是自由.开放.公开的,并且易于了解.而且在客户端.服务器.组件.源码库 ...

  6. 5分钟集成即时通讯功能——环信Android版

    下载环信demo (Android) 什么是环信demo 环信demo展示了怎样使用环信SDK快速创建一个完整的类微信聊天APP.展示的功能包括:环信SDK初始化,登录,登出,注册消息接收listen ...

  7. 【handler】Android定时每十分钟执行一次任务

    private Handler handler = new Handler(){public void handleMessage(Message msg) {super.handleMessage( ...

  8. 中油即时通信电脑版_市场营销之即时通讯营销

    ✎ IM营销又叫即时通讯营销(instantmessaging),是企业通过即时工具im推广产品和品牌,以实现目标客户挖掘和转化的网络营销方式. 封面设计丨Sweety 责编丨花花 第60篇丨每日一篇 ...

  9. (转载)【即时通讯】今天的鼻子一酸的即时通讯

    今天的鼻子一酸的即时通讯,我们等待着激动人心的时刻早日到来,一想到我千辛万苦才把游泳学会,第一次打我,等会妈妈会给我去挂针的,然后把掉下来的香灰放入杯中,看见一个熟悉的即时通讯身影打着伞迎着风雨向学校 ...

  10. 手机视频开发即时通讯软件

    据<第30次中国互联网络发展状况统计报告>显示,即时通信在中国网民中的使用率达82.8%,用户人数4.45亿.手机上网的进一步普及,尤其是智能终端的推广,以及手机聊天工具的创新,使得即时通 ...

最新文章

  1. 七天学习计划_c#_[1]泛型类(还有六天,明天继续写!)
  2. 电脑已连接wifi的密码查询
  3. 阿里云短信isp.RAM_PERMISSION_DENY没有访问权限解决办法
  4. mount: 未知的文件系统类型“vboxsf”_第六章--文件系统管理
  5. nosql----redis持久化详解
  6. (34)SystemVerilog语言编写计数器
  7. Kibana 6.2.3修改本地时区
  8. python中strptime函数_python datetime中strptime用法详解
  9. oppoa1计算机记录删了怎么办,捡到oppoA1怎么解锁
  10. easypoi 表头数据导入_使用easypoi根据表头信息动态导出excel
  11. 金融行业网络安全等级保护测评指南
  12. Python 01--介绍、基本语法、流程控制
  13. 推荐书籍:网络流量整形与带宽控制技术
  14. 怎么把彩色的照片变黑白色?
  15. day29 | 216.组合总和III 17.电话号码的字母组合
  16. 大数据笔记-外存算法
  17. 【数据结构】递归斐波那契数列的时间复杂度、空间复杂度
  18. 网易考拉Android客户端网络模块设计
  19. Linux系统vi和vim的介绍
  20. android流水App(记账本)--数据库实现多功能

热门文章

  1. Verilog语言要素(三)
  2. Crack Theory for IPA
  3. iphone开发:ipa打包
  4. 洲际酒店集团与国际青年成就达成全球合作
  5. 金融管理系统测试报告(内部测试案例)
  6. LINUX下PHP扩展开发:第一个C扩展
  7. oracle触发器update本表数据
  8. 山寨AR手游频出,VRAR正打造一庞大…
  9. XML 中大于等于小于等于的写法
  10. Boost:宏BOOST_LOG_TRIVIAL的测试