美文网首页安卓三方集成
融云自定义消息通知栏显示

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

作者: 爱投篮的安德森 | 来源:发表于2017-08-03 12:44 被阅读63次

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

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

    
    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);
    

    相关文章

      网友评论

        本文标题:融云自定义消息通知栏显示

        本文链接:https://www.haomeiwen.com/subject/qzqplxtx.html