Android 通过bmob十分钟实现即时通讯
我的上一篇博客简要的介绍了一下我对即时通讯的一些尝试,后面还介绍了通过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十分钟实现即时通讯相关推荐
- Android基于环信开发的即时通讯APP
Android基于环信开发的即时通讯APP,源代码在Github上,GitHub地址为:https://github.com/PowerDos/BLChat ,希望能够帮到你们,下面是系统简介. 简介 ...
- Android后台保活实践总结:即时通讯应用无法根治的“顽疾”
前言 Android进程和Service的保活,是困扰Android开发人员的一大顽疾.因涉及到省电和内存管理策略,各厂商基于自家的理解,在自已ROOM发布时都会对标准Android发行版作或多或少的 ...
- android 环信集成,Android Studio下的环信即时通讯简单集成
环信即时通讯云是全球最大的即时通讯云 PaaS 平台,可以快速实现APP的即时通讯的功能,官方的DEMO是基于Eclipse开发的,对于新版本的Android Studio支持不太好,下面就简单说一下 ...
- android仿网易云音乐、即时通讯、bilibili、沙漏动画等源码
Android精选源码 android仿网易云音乐安卓版源码 android开源即时通讯,实时传讯IM源码 android类似淘宝的商品详情页源码 android面向.艺术家.设计师等创意类作品源码 ...
- Android学习笔记--基于XMPP的即时通讯
一.常见即时通讯实现 socket openfire+asmack 环信 信鸽 融云 二.XMPP优势 1. 开放性 XMPP协议是自由.开放.公开的,并且易于了解.而且在客户端.服务器.组件.源码库 ...
- 5分钟集成即时通讯功能——环信Android版
下载环信demo (Android) 什么是环信demo 环信demo展示了怎样使用环信SDK快速创建一个完整的类微信聊天APP.展示的功能包括:环信SDK初始化,登录,登出,注册消息接收listen ...
- 【handler】Android定时每十分钟执行一次任务
private Handler handler = new Handler(){public void handleMessage(Message msg) {super.handleMessage( ...
- 中油即时通信电脑版_市场营销之即时通讯营销
✎ IM营销又叫即时通讯营销(instantmessaging),是企业通过即时工具im推广产品和品牌,以实现目标客户挖掘和转化的网络营销方式. 封面设计丨Sweety 责编丨花花 第60篇丨每日一篇 ...
- (转载)【即时通讯】今天的鼻子一酸的即时通讯
今天的鼻子一酸的即时通讯,我们等待着激动人心的时刻早日到来,一想到我千辛万苦才把游泳学会,第一次打我,等会妈妈会给我去挂针的,然后把掉下来的香灰放入杯中,看见一个熟悉的即时通讯身影打着伞迎着风雨向学校 ...
- 手机视频开发即时通讯软件
据<第30次中国互联网络发展状况统计报告>显示,即时通信在中国网民中的使用率达82.8%,用户人数4.45亿.手机上网的进一步普及,尤其是智能终端的推广,以及手机聊天工具的创新,使得即时通 ...
最新文章
- 七天学习计划_c#_[1]泛型类(还有六天,明天继续写!)
- 电脑已连接wifi的密码查询
- 阿里云短信isp.RAM_PERMISSION_DENY没有访问权限解决办法
- mount: 未知的文件系统类型“vboxsf”_第六章--文件系统管理
- nosql----redis持久化详解
- (34)SystemVerilog语言编写计数器
- Kibana 6.2.3修改本地时区
- python中strptime函数_python datetime中strptime用法详解
- oppoa1计算机记录删了怎么办,捡到oppoA1怎么解锁
- easypoi 表头数据导入_使用easypoi根据表头信息动态导出excel
- 金融行业网络安全等级保护测评指南
- Python 01--介绍、基本语法、流程控制
- 推荐书籍:网络流量整形与带宽控制技术
- 怎么把彩色的照片变黑白色?
- day29 | 216.组合总和III 17.电话号码的字母组合
- 大数据笔记-外存算法
- 【数据结构】递归斐波那契数列的时间复杂度、空间复杂度
- 网易考拉Android客户端网络模块设计
- Linux系统vi和vim的介绍
- android流水App(记账本)--数据库实现多功能