Firebase上游消息 [英] Firebase upstream messages

查看:55
本文介绍了Firebase上游消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大多数情况下,在发送上游消息时,消息不会到达我的服务器,即使在收到消息到服务器时,也不会调用onMessageSent(String msgId)函数(onMessageReceived(RemoteMessage fcmMessage)很好地工作).

When sending upstream message most of the times the message does not get to my server, and even when the message received to the server the onMessageSent(String msgId) function isn't called (the onMessageReceived(RemoteMessage fcmMessage) work very well).

为什么不调用该函数,为什么我需要发送10条上游消息才能从Firebase云消息传递到我的服务器?

Why the function isn't called and why do I need to send 10 upstream messages to get response from the firebase cloud messaging to my server?

new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... params) {
            String sendTo = SENDER_ID + "@gcm.googleapis.com";
            RemoteMessage.Builder data = new RemoteMessage.Builder(sendTo);
            data.addData("Hello", "World");

            try {
                for (int i = 0; i < 10; i++) {
                    Thread.sleep(1000);
                    String messageID = getRandomString();
                    data.setMessageId(messageID);
                    Logger.d(TAG, "messageID: " + messageID);
                    FirebaseMessaging.getInstance().send(data.build());

                }

            } catch (Exception e) {
                Logger.e(TAG, "Error sending upstream message: " + e.getMessage());
                return "Error sending upstream message:" + e.getMessage();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            if (result != null) {
                Logger.e(TAG, "send message failed: " + result);
            }
        }

    }.execute(null, null, null);

}

推荐答案

buttonUpstreamEcho.setOnClickListener(new View.OnClickListener(){

buttonUpstreamEcho.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d(TAG, "Echo Upstream message logic");
            String message = editTextEcho.getText().toString();
            Log.d(TAG, "Message: " + message + ", recipient: " + token);
            FirebaseMessaging.getInstance().send(new RemoteMessage.Builder(FCM_PROJECT_SENDER_ID + FCM_SERVER_CONNECTION)
                    .setMessageId(Integer.toString(RANDOM.nextInt()))
                    .addData("message", message)
                    .addData("action", BACKEND_ACTION_ECHO)
                    .build());
            // To send a message to other device through the XMPP Server, you should add the
            // receiverId and change the action name to BACKEND_ACTION_MESSAGE in the data
        }
    });

这是一个示例Android项目,展示了Firebase Cloud Messaging(FCM)来管理上游和下游消息.

This is a sample Android project to showcase the Firebase Cloud Messaging (FCM) to manage upstream and downstream messages.

https://github.com/carlosCharz/FCMTest

这是youtube中的视频,解释了它的作用.

This is the video in youtube that explains what it does.

https://www.youtube.com/watch?v=SEzOKSoAMG0

希望您发现它有用.

这篇关于Firebase上游消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆