融云IM(一)-----接入

2024-05-05 06:18
文章标签 接入 im 融云

本文主要是介绍融云IM(一)-----接入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

1、融云IM应该说是目前最好自定义和易读取文档的即时通讯第三方SDK了,之前有用过阿里百川IM的,可惜阿里百川不再更新和维护了
2、im千万别选QQ的,如果就普通聊天选择qq那没问题,如果业务需要自定义的果断放弃。融云IM一直在快速的更新和维护。选它就没错了

步骤1:创建应用,导入SDK

创建应用:记得开发环境和生产环境是分开的,开发环境可生成的IM账号是有限的,有时im登录不成功是因为没账号.
导入SDK:强烈推荐以导入 Module 方式引入IMKit,IMLib。方便修改

步骤2:初始化

public class App extends Application {@Overridepublic void onCreate() {super.onCreate();RongIM.init(this);}
}

步骤3:登录IM

从app服务器端获取token,然后调用RongIM.connect(token, new RongIMClient.ConnectCallback())即可
一般调用时机是在首页,看业务也可以在启动界面。
注意

  1. 调用成功一次就好
  2. 服务器获取的token,可以用SP保存下来,因为是长期有效的,不用每次都去获取

示例代码:

public static void connect() {if (Utils.isNetworkConnected(MyApplication.getInstance()))if (!TextUtils.isEmpty(SPUtils.getToken())) {connect(SPUtils.getToken(),null);} else {//正常只有第一次进入应用会为""new BaseIMPresenter().getToken(false, new EmptyTokenListener() {@Overridepublic void getToken(String token) {connect(token, null);}});}
}/*** <p>连接服务器,在整个应用程序全局,只需要调用一次,需在 {@link #init(Context)} 之后调用。</p>* <p>如果调用此接口遇到连接失败,SDK 会自动启动重连机制进行最多10次重连,分别是1, 2, 4, 8, 16, 32, 64, 128, 256, 512秒后。* 在这之后如果仍没有连接成功,还会在当检测到设备网络状态变化时再次进行重连。</p>** @param token 从服务端获取的用户身份令牌(Token)。* @return RongIM  客户端核心类的实例。*/
private static void connect(String token, final ConnectListener cl) {if (BuildConfig.APPLICATION_ID.equals(MyApplication.getCurProcessName(MyApplication.getInstance()))) {RongIM.connect(token, new RongIMClient.ConnectCallback() {/*** Token 错误。可以从下面两点检查* 1.  Token 是否过期,如果过期您需要向 App Server 重新请求一个新的 Token* 2.  token 对应的 appKey 和工程里设置的 appKey 是否一致*/@Overridepublic void onTokenIncorrect() {if (null != cl)cl.onTokenIncorrect();new BaseIMPresenter().getToken(true, null);}/*** 连接融云成功* @param userid 当前 token 对应的用户 id*/@Overridepublic void onSuccess(String userid) {}/*** 连接融云失败* @param errorCode 错误码,可到官网 查看错误码对应的注释*/@Overridepublic void onError(RongIMClient.ErrorCode errorCode) {}});}
}

额外提供IM是否在线的方法

public static boolean isOnline() {return RongIM.getInstance().getCurrentConnectionStatus().equals(RongIMClient.ConnectionStatusListener.ConnectionStatus.CONNECTED);
}

步骤4: 会话列表界面

就是用IMKit中的ConversationListFragment,可以认为就是个fragment。正常用就会显示,后期会介绍在这fragment中新增些自定义的会话
注意点:

它是用uri来设置你要显示的类型
如果本身就是显示会话列表界面需要在清单中配置(可参考融云文档)

示例代码:

public Fragment initConversationList() {if (mListFragment == null) {mListFragment = new ConversationListFragment();uri = Uri.parse("rong://" + BuildConfig.APPLICATION_ID).buildUpon().appendPath("conversationlist").appendQueryParameter(Conversation.ConversationType.PRIVATE.getName(), "false").appendQueryParameter(Conversation.ConversationType.SYSTEM.getName(), "false").build();mListFragment.setUri(uri);}return mListFragment;
}

步骤5:会话界面

用的是IMkit中的ConversationFragment。有targetId就能显示,targetId就是对方的IM账号

示例代码:

private void enterFragment(Conversation.ConversationType mConversationType, String toUserIm) {fragment = new ConversationFragment();uri = Uri.parse("rong://" + BuildConfig.APPLICATION_ID).buildUpon().appendPath("conversation").appendPath(mConversationType.getName().toLowerCase()).appendQueryParameter("targetId", toUserIm).build();fragment.setUri(uri);FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();//xxx 为你要加载的 idtransaction.add(R.id.rong_content, fragment);transaction.commitAllowingStateLoss();showRealView();
}

在 AndroidManifest.xml 中,会话 Activity 下面配置 intent-filter。 注意请修改 android:host 为 App 的 ApplicationId,其他保持不变。

<activityandroid:name="io.rong.fast.activity.ConversationActivity"android:screenOrientation="portrait"android:windowSoftInputMode="stateHidden|adjustResize"><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><dataandroid:host="${applicationId}"android:pathPrefix="/conversation/"android:scheme="rong" /></intent-filter></activity>

ApplicationId可以不改,在build.gradle里面配置
manifestPlaceholders = [ APPLICATIONID: applicationId]
启动会话界面
示例代码:

public static void startChattingActivity(Context context, Conversation.ConversationType conversationType, String targetId, String title) {if (context != null && !TextUtils.isEmpty(targetId) && conversationType != null) {Uri uri = Uri.parse("rong://" + BuildConfig.APPLICATION_ID).buildUpon().appendPath("conversation").appendPath(conversationType.getName().toLowerCase(Locale.US)).appendQueryParameter("targetId", targetId).appendQueryParameter("title", title).build();context.startActivity(new Intent("android.intent.action.VIEW", uri));} else {throw new IllegalArgumentException();}
}

title是用来显示标题的,当然会话界面就需要做获取代码了。

还有混淆啥的,可参考官网

好了,到这里接入IM,并且建立聊天就完成了。有问题可加我QQ:893151960或者群142739277
先说明:解决问题可能收费的,讨论问题免费

这篇关于融云IM(一)-----接入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960972

相关文章

Java应用对接pinpoint监控工具的时候,应用名称长度超出限制而导致接入失败

一、背景 java应用需要接入pinpoint,同一个虚拟机上的其他应用接入成功,唯独本应用不行。 首先排除是pinpoint agent的问题,因为其他应用都正常。 然后,我就对比二者的启动脚本。 -javaagent:/opt/pinpoint/pinpoint-bootstrap.jar -Dpinpoint.agentId=DA301004_17 -Dpinpoint.applic

一步步教你接入个推 推送

一: manifast中的配置 权限: <!-- 个推SDK权限配置开始 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permissi

一步步教你如何为你的app接入支付宝

官方接口文档步骤链接: https://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103563&docType=1 1首先,你的要有一个企业的账户,并且已经和支付宝平台签约了, (具体操作查看https://doc.open.alipay.com/doc2/detail.htm?treeId=58&articleId=1035

兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)

Apache Doris 内置支持包括 Hive、Iceberg、Hudi、Paimon、LakeSoul、JDBC 在内的多种 Catalog,并为其提供原生高性能且稳定的访问能力,以满足与数据湖的集成需求。而随着 Apache Doris 用户的增加,新的数据源连接需求也随之增加。因此,从 3.0 版本开始,Apache Doris 引入了 Trino Connector 兼容框架。 Tri

强化网络安全:通过802.1X协议保障远程接入设备安全认证

随着远程办公和移动设备的普及,企业网络面临着前所未有的安全挑战。为了确保网络的安全性,同时提供无缝的用户体验,我们的 ASP 身份认证平台引入了先进的 802.1X 认证协议,确保只有经过认证的设备才能接入您的网络。本文档将详细介绍我们的平台如何通过 802.1X 协议实现高效、安全的远程接入认证。 产品亮点 1. 无缝集成 我们的 ASP 身份认证平台支持无缝集成到现有的网络基础设施中

经验笔记:IM系统中的点对点传输

IM系统中的点对点传输经验笔记 随着即时通讯(IM,Instant Messaging)系统的发展,用户对于高效、安全的通信需求日益增长。点对点(P2P,Peer-to-Peer)传输作为一种能够提高数据传输效率和保护用户隐私的技术,越来越受到IM系统的青睐。本文将探讨在IM系统中实现点对点传输的必要性、挑战及解决方案。 1. 引言 在传统的IM系统中,所有的消息都需要通过中心服务器进行路由

社区团购为什么需要接入分账系统?

社区团购作为一种新兴的零售业态,在中国乃至全球范围内迅速崛起,尤其在疫情期间,其便捷的购物体验与高效的供应链优势得到了充分展现。 社区团购的基本模式是通过团长组织社区内的居民进行集体购买,平台则负责商品供应与配送。在这个过程中,涉及的主要参与者包括平台、团长、供应商以及消费者。分账模式则决定了各参与方如何分享由团购产生的收益,直接影响到平台的盈利模式、团长的积极性以及供应商的参与意愿。 一、分

计算机网络13——IM聊天系统——网络功能实现——UDP

目录 1、类的成员变量 2、魔鬼数字 3、创建接收数据的线程 4、线程函数 5、防止旧接收到的数据被新数据覆盖掉 6、拷贝用的函数:memcpy_s 7、回收线程资源 8、计数器-1 (1)结束线程工作 (2)关闭句柄 测试代码 1、类的成员变量 同一个类中的多个函数中都要使用的变量应设置为类的成员变量 2、魔鬼数字 解决方法:定义成宏 目的:1、好理解

WordPressMIP主题下载,WordPress MIP与百度熊掌号改造接入(V3.4.1)

WordPressMIP主题,是基于熊掌号最新移动端主题,根据百度MIP开发规范升级改造而成,移除冗余代码,完美符合百度MIP规范的一款WordPress移动端主题。   WordPress快速引入百度MIP其实也挺简单,懂代码的人可以直接根据百度MIP官网的规范和验证提示进行原有移动端的改造,不过需要说一点的就是,那些使用自适应的网站引入MIP估计是有点繁琐,甚至基本不太可能,与其改造原

副本技能-Amazon开放平台MWS的API接入

Amazon官方工具各类地址 亚马逊订单提供接口调试地址: https://mws.amazonservices.com/scratchpad/index.html 亚马逊MWS 端点及MarketplaceId查询地址: http://docs.developer.amazonservices.com/zh_CN/dev_guide/DG_Endpoints.html 亚马逊MWS官方开发者文