android融云自定义通知,android融云消息免打扰
刚刚接到这个需求,感受应该特别简单,看了下,网上有例子,可是说的不是特别详细,在官网上看了一下,而后总结了一下,终于也是被搞定,android
不得不说官网也是比较坑,官网上给的例子的一些方法好多都已通过期了,一开始写的时候,发现长按事件以后怎么也出发不了回调,后来找到了融云官方的jdk,才发现已通过期了,新的融云列表事件监听用的是ide
RongIM.setConversationListBehaviorListener();
一共有四个回调方法分别是:布局
头像点击事件ui
@Override
public boolean onConversationPortraitClick(Context context, Conversation.ConversationType conversationType, String s) {
return false;
}
spa
头像长按事件xml
@Override
public boolean onConversationPortraitLongClick(Context context, Conversation.ConversationType conversationType, String s) {
return false;
}
对象
消息点击事件blog
@Override
public boolean onConversationClick(Context context, View view, UIConversation uiConversation) {
return false;
}
事件
消息长按事件utf-8
@Override
public boolean onConversationLongClick(final Context context, View view, final UIConversation uiConversation) {
return false;
}
咱们须要处理的就是onConversationLongClick()方法,首先把返回值更改成true,调用的时候就会调用咱们自定义的弹框,而不是融云提供的
首先咱们须要先自定好弹窗代码以下:
/*聊天浮层*/public static voidChatshow(finalContext mContext,String title,finalOnFloatingLayerClickLisenter onOKClickLisenter) {
AlertDialog.Builder builder = newAlertDialog.Builder(mContext);finalAlertDialog alertDialog = builder.create();alertDialog.show();alertDialog.getWindow().setContentView(R.layout.chatlist_dia);TextView closeBtn = (TextView) alertDialog.getWindow().findViewById(R.id.btn_delete);TextView upgradeText = (TextView) alertDialog.getWindow().findViewById(R.id.nomsg);upgradeText.setText(title);upgradeText.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
alertDialog.dismiss();onOKClickLisenter.onOkClick();}
});closeBtn.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View view) {
alertDialog.dismiss();onOKClickLisenter.onDismiss();}
});alertDialog.setCancelable(true);alertDialog.setCanceledOnTouchOutside(true);alertDialog.show();}
布局文件:
效果图就是这样子:
接下来咱们须要在长按事件中处理咱们的操做了,首先第一步,咱们须要获取到当前消息是否免打扰
RongIM.getInstance().getConversationNotificationStatus(Conversation.ConversationType.PRIVATE,
uiConversation.getConversationTargetId(), new RongIMClient.ResultCallback() {
@Override
public void onSuccess(final Conversation.ConversationNotificationStatus conversationNotificationStatus) {
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
}
});
成功以后返回了一个conversationNotificationStatus对象,这个对象是干吗用的呢,里面就包含了当前的是否免打扰的信息,他有一个getvalue()方法,返回值是一个int型的,1=未开启免打扰,0=开启免扰,也就是说是1的时候点击出现弹窗显示的是开启免打扰,0的时候关闭免打扰。可是此处有一个小坑就是,你获取到这个值以后,点击设置免打扰,会发现无效,先来看看若是设置免打扰的方法吧;
RongIM.getInstance().setConversationNotificationStatus(Conversation.ConversationType.PRIVATE,
uiConversation.getConversationTargetId(), conversationNotificationStatus1, new RongIMClient.ResultCallback() {
@Override
public void onSuccess(Conversation.ConversationNotificationStatus conversationNotificationStatus) {
showToast("设置成功");
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
showToast("设置失败");
}
});
调用此方法后会发现结果一直不变,这是为何呢;后来查看了源码以后,才发现融云会把conversationNotificationStatus对象里面的getValue()的值拿出来,可是值一直都是1,因此会没有效果,此时此刻或许你就会明白了,我们能够手动给他设置,
这个对象既然有gevalue方法,那么久会有setvalue方法,并且这个方法又会返回一个conversationNotificationStatus对象,因而咱们再把这个对象设置进去,运行代码,ok没问题啦。贴出此处总体代码吧:
RongIM.getInstance().getConversationNotificationStatus(Conversation.ConversationType.PRIVATE,uiConversation.getConversationTargetId(), newRongIMClient.ResultCallback() {
@Overridepublic voidonSuccess(finalConversation.ConversationNotificationStatus conversationNotificationStatus) {
final intvalue = conversationNotificationStatus.getValue();String title;finalConversation.ConversationNotificationStatus conversationNotificationStatus1;if(value==1){
conversationNotificationStatus1=conversationNotificationStatus.setValue(0);title="免打扰";}else{
conversationNotificationStatus1=conversationNotificationStatus.setValue(1);title="取消免打扰";}
AgreementDialog.Chatshow(context,title, newOnFloatingLayerClickLisenter() {
@Overridepublic voidonOkClick() {
RongIM.getInstance().setConversationNotificationStatus(Conversation.ConversationType.PRIVATE,uiConversation.getConversationTargetId(),conversationNotificationStatus1, newRongIMClient.ResultCallback() {
@Overridepublic voidonSuccess(Conversation.ConversationNotificationStatus conversationNotificationStatus) {
showToast("设置成功");}
@Overridepublic voidonError(RongIMClient.ErrorCode errorCode) {
showToast("设置失败");}
});}
@Overridepublic voidonDismiss() {
RongIM.getInstance().getRongIMClient().removeConversation(Conversation.ConversationType.PRIVATE,uiConversation.getConversationTargetId(), newRongIMClient.ResultCallback() {
@Overridepublic voidonSuccess(Boolean aBoolean) {
showToast("删除成功");}
@Overridepublic voidonError(RongIMClient.ErrorCode errorCode) {
showToast("删除失败");}
});}
});}
@Overridepublic voidonError(RongIMClient.ErrorCode errorCode) {
}
});好了,这个功能到这里也就结束了,仍是比较简单的,可是没作过的,可能就会采一些坑,但愿这篇博客会对大家开发有帮助。
android融云自定义通知,android融云消息免打扰相关推荐
- Android 融云单聊与群聊消息免打扰功能设置与消息删除功能实现
一.设置群聊与单聊消息免打扰功能: 1.下面直接进入逻辑代码: 实现监听事件: /*** 设置会话列表界面操作的监听器.*/RongIM.setConversationListBehaviorList ...
- android融云自定义通知,Android SDK 体系架构 - 融云 RongCloud
Android SDK 体系架构和消息体系 本文档将详细介绍融云的 SDK 产品架构和消息体系,以便于您更深入的了解融云并更快速的开发自己的产品. 融云 SDK 系统架构 IMKit IMKit 的功 ...
- Android 融云IM设置消息免打扰无效
Android集成融云以后,设置会话消息免打扰所需要的方法无需多说: RongIM.getInstance().setConversationNotificationStatus(conversati ...
- JAVA中调用阿里云语音通知Api并接收消息回执
JAVA中调用阿里云语音通知Api并接收消息回执 配置文件 需要的包 <dependency><groupId>com.aliyun</groupId><ar ...
- Android集成环信IM,实现为某一个好友设置消息免打扰
环信SDK中是没有提供直接为某一个好友设置消息免打扰的api,其实,所谓的消息免打扰,无非就是在收到好友的消息时,不进行通知,在会话列表中,不显示未读消息数量,因此,我们可以将是否开启免打扰的的状态保 ...
- android融云消息免打扰
刚刚接到这个需求,感觉应该特别简单,看了下,网上有例子,但是说的不是特别详细,在官网上看了一下,然后总结了一下,终于也是被搞定, 不得不说官网也是比较坑,官网上给的例子的一些方法好多都已经过期了,一开 ...
- android notification 自定义声音,Android和iOS自定义通知声音
Android 自定义通知声音 在安卓开发中.很多时候要使用通知提醒用户.那么使用通知就会设计到通知的提示音.那么这篇文章就和大家一起讨论一下提示音的问题 1.自定义声音 声音文件放在ram目录下, ...
- cordova自定义android插件,Cordova 自定义插件(Android版本)
Cordova 自定义插件(android) 特别注意 android 项目的包名 必须为 com.example.hello,否则编译不会通过. 1.安装命令工具 $ npm i plugman - ...
- android官网自定义相机,android native.js camera自定义相机
//js代码 //用代码渲染页面 let activity = plus.android.runtimeMainActivity(); let SurfaceView = plus.android.i ...
- android简单登录自定义密码,Android自定义UI手势密码简单版
先看看效果图: ImageLockActivity package com.example.imagelock; import com.example.view.NinePointLineView; ...
最新文章
- css盒子教程,彻底弄懂css盒子模式(div布局快速入门)_css教程
- 安卓在线按钮设计网站
- boost::flyweight模块实现自定义工厂模式的示例
- 第 8 章:管理模式对象
- 周五怎么表示 mysql_完美起航-MySQL找每个月最后一个星期五--函数定义与使用
- CollapsiblePanel控件
- CSS的50个代码片段
- dBeaver sql格式化配置-v1.5
- PPC软件字体太小的调整
- Nodejs 中文分词
- php摇骰子源码,HTML5 掷骰子游戏 源码下载
- 周末闲来——2048游戏开发
- 高德Mapabc地图标注 基础篇
- VisualC++6.0如何打开之前的程序
- JSON格式校验工具
- matlab离散系统的频率响应,离散系统的频率响应分析
- android widget的中文文档
- C#工具栏的各种工具
- Java 14:JDK 14进入GA时的所有新功能
- Unity 中 print 和 Debug.Log 的区别
热门文章
- 多个excel工作簿合并_Microsoft Excel如何快速合并多个工作簿至一个工作簿中?
- 数学基础——数理逻辑
- codelite14中文语言包_CodeLite中文语言包
- 浅析dToF和iToF
- mysql截取邮箱后缀_截取邮箱格式以及统计邮箱总数
- 支付宝小程序访问浙里办应用,提示页面访问受限,IOS无法访问
- 用php上传头像的步骤,php怎么上传头像
- 常见的java开发面试题整理
- Win7+Ubuntu 16.04LTS 双系统安装
- 【Hadoop】Hadoop Snappy 安装 (Ubuntu 16.04)