融云自定义消息通知栏显示

融云自定义消息通知栏显示

第一步 首先要注册个自定义的广播,代码如下:


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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,066评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,061评论 19 139
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,757评论 0 15
  • 那不是我刚入手的包包吗此时,它像光标一样快速移动谁的手压在空格上了吧或者删除键在一个白色的大T恤上。我的眼睛随着包...
    文姬阅读 1,823评论 2 1
  • 也许命运真的早已安排好了一切,除非头破血流,否则无法更改…… 毕业三年了,一事无成,很懊恼很怀疑,自己怎么落的...
    A小黑胖子阅读 2,682评论 0 0

友情链接更多精彩内容