轻量级前端框架助力开发者提升项目效率与性能
674
2022-11-02
使用LeanCloud进行即时通信
目录
-开源项目LeanCloudChatKit-Android简单配置
leanCloudChatKit-manifest配置工程的buildgradleapplication配置
代码接入即时聊天
创建会话获取首次消息接收实时消息
1.-开源项目LeanCloudChatKit-Android
git clone git@github.com:leancloud/LeanCloudChatKit-Android.git
-完之后发现又个模块叫leanCloudChatKit,把它作为module导入到自己的项目中。
2.简单配置
leanCloudChatKit-manifest配置
如果直接导入模块,使用其中的Activity类时可能会出问题,我这里有报错,各种不兼容AppCompat,如果你那里也存在这个问题,就需进行如下操作: 在manifest中为所有的leanCloudChatKit在Activity级别添加:
android:theme="@style/LCIMKitTheme"
权限这个项目没有适配,需要自己适配,这里测试就没做适配了。
工程的build.gradle
buildscript { repositories { jcenter() maven { url " } } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}task clean(type: Delete) { delete rootProject.buildDir}allprojects { repositories { jcenter() //这里是 LeanCloud 的包仓库 maven { url "初始化参数依次为 this, AppId, AppKey
.getInstance().setProfileProvider(CustomUserProvider.getInstance()); AVOSCloud.setDebugLogEnabled(true); LCChatKit.getInstance().init(getApplicationContext(), APP_ID, APP_KEY); AVIMClient.setAutoOpen(false); PushService.setDefaultPushCallback(this, MainActivity2.class);
此处的app_id和app_key需要在leancloud官网控制台进行申请:leancloud官网 比较坑的是不能复制,需要抄写,这里要小心,不要抄错了。
代码接入即时聊天
LCChatKit.getInstance().open(editNo.getText().toString(), new AVIMClientCallback() { @Override public void done(AVIMClient avimClient, AVIMException e) { if (null == e) { Intent intent = new Intent(LoginActivity.this,MainActivity2.class); startActivity(intent); } else { Toast.makeText(LoginActivity.this, e.toString(), Toast.LENGTH_SHORT).show(); } } });
此段代码用于聊天功能登录,这里的id可以随意设置,但是注意,不同用户之间id不同。
然后这里要进行聊天了。聊天主要通过会话对象实现同一频道相互发送消息,这里有两种形式,一种是或去信息列表,参与聊天(多人用),一种是单人的,这里就介绍单人聊天。
创建会话
List
这里需要注意:asList中需要的是userid,就是各个用户登录后的userid,这个userid是不需要包括自己的。只有创建会话以后,才能接受消息。
获取首次消息
private void initReceiveMsg() { conversation.queryMessages(new AVIMMessagesQueryCallback() { @Override public void done(List
接收实时消息
EventBus进行注册反注册
使用EventBus,需要在onCreate的时候进行register,onDestroy的时候进行unregister:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }
然后在订阅者中进行接收处理
简单的说就是AVIMTypedMessageHandler负责接收推送过来的消息,然后通过总线模式回传给界面。
@Subscribe public void onEvent(LCIMIMTypeMessageEvent event){ if(event.conversation.getConversationId() != conversation.getConversationId()) return; message = event.message; LCIMProfileCache.getInstance().getCachedUser(message.getFrom(), new AVCallback
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~