融云自定义消息通知栏显示
第一步 首先要注册个自定义的广播,代码如下:
public classCharNotificationReceiverextendsPushMessageReceiver {
@Override
public booleanonNotificationMessageArrived(Context context,PushNotificationMessage message) {
return false;//返回false,会弹出融云SDK默认通知;返回true,融云SDK不会弹通知,通知需要由您自定义。
}
@Override
public booleanonNotificationMessageClicked(Context context,PushNotificationMessage message) {
return false;//返回false,会走融云SDK默认处理逻辑,即点击该通知会打开会话列表或会话界面;返回true,则由您自定义处理逻辑。
}
}
第二步 要在你的 AndroidManifest.xml文件中注册你刚刚创建的广播
<!--融云广播接受者-->
<receiver android:name="com.cnsunrun.common.receiver.CharNotificationReceiver"
android:exported="true">
<intent-filter>
<action android:name="io.rong.push.intent.MESSAGE_ARRIVED" />
<action android:name="io.rong.push.intent.MI_MESSAGE_ARRIVED" />
<action android:name="io.rong.push.intent.MESSAGE_CLICKED" />
<action android:name="io.rong.push.intent.MI_MESSAGE_CLICKED" />
</intent-filter>
</receiver>
经过以上的两步之后你成功了一半,但是你还是收不到消息的通知,这个问题也是困惑我了许久,最后发现我没有设置融云接受消息的监听
public class RongCloudEvent implements RongIMClient.OnReceiveMessageListener, RongIMClient.ConnectionStatusListener, RongIM.OnSendMessageListener {
private static RongCloudEvent mRongCloudInstance;
private final Context mContext;
//开始的时候是2000 改成1s了
long time = 1000*60*30;
static SplashActivity act;
AHandler.Task task;
@Override
public boolean onReceived(Message message, int i) {
Log.d("",message.toString());
//如果接受到了消息就需要把定时任务关闭
task.cancel();
return false;
}
/**
* 初始化 RongCloud.
*
* @param context 上下文。
*/
public static void init(Context context) {
if (mRongCloudInstance == null) {
synchronized (RongCloudEvent.class) {
if (mRongCloudInstance == null) {
mRongCloudInstance = new RongCloudEvent(context);
}
}
}
}
/**
* 构造方法。
*
* @param context 上下文。
*/
private RongCloudEvent(Context context) {
mContext = context;
initDefaultListener();
}
/**
* 获取RongCloud 实例。
*
* @return RongCloud。
*/
public static RongCloudEvent getInstance() {
return mRongCloudInstance;
}
/**
* RongIM.init(this) 后直接可注册的Listener。
*/
private void initDefaultListener() {
RongIM.getInstance().setOnReceiveMessageListener(this);//设置消息接收监听器
RongIM.getInstance().setSendMessageListener(this);
RongIM.setConnectionStatusListener(this);
}
@Override
public void onChanged(ConnectionStatus connectionStatus) {
}
@Override
public Message onSend(Message message) {
Log.d("",message.toString());
AHandler.runTask(task = new AHandler.Task() {
@Override
public void update() {
//关闭咨询的接口请求
}
}, time);
return null;
}
@Override
public boolean onSent(Message message, RongIM.SentMessageErrorCode sentMessageErrorCode) {
Log.d("",message.toString());
return false;
}
}
第四步 要在你的application中初始化下RongCloudEvent这个类 ,这样的话就可以监听到融云发过来的消息了
//初始化融云 和融云消息的监听器
RongIM.init(this);
RongCloudEvent.init(this);
网友评论