【问题标题】:Cloud Function executed successfully but notification not showing android云功能执行成功,但通知未显示 android
【发布时间】:2017-12-07 16:57:17
【问题描述】:

在一个安卓应用程序中,我使用 FCM 发送通知,云功能执行成功,如 firebase 控制台日志所示,但在我的设备中它没有显示任何通知,可能是什么原因?

下面是我的 index.js 的代码

let functions = require('firebase-functions');
let admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotification = functions.database.ref('/notifications/messages/{pushId}')
.onWrite(event => {
     console.log('notifying start1');
    const message = event.data.current.val();
    const senderUid = message.from;
    const receiverUid = message.to;
    console.log('SenderId '+senderUid + ' Receiver Id '+receiverUid);
    const promises = [];
 console.log('notifying start2');
    if (senderUid == receiverUid) {
        //if sender is receiver, don't send notification
        promises.push(event.data.current.ref.remove());
        return Promise.all(promises);
    }
      console.log('notifying start3');
    const getInstanceIdPromise = admin.database().ref(`/users/${receiverUid}/accessToken`).once('value');
      console.log('notifying start4');
    const getReceiverUidPromise = admin.auth().getUser(receiverUid);
console.log('notifying start5');
    return Promise.all([getInstanceIdPromise, getReceiverUidPromise]).then(results => {
        const accessToken = results[0].val();
        const receiver = results[1];
        console.log('notifying ' + receiverUid + ' about ' + message.body + ' from ' + senderUid);
        const payload = {
            notification: {
                title: 'Firebase Notification',
                body: message.body,
            }
        };
        admin.messaging().sendToDevice(accessToken, payload)
            .then(function (response) {
                console.log("Successfully sent message:", response);
            })
            .catch(function (error) {
                console.log("Error sending message:", error);
            });   
            });
            });

请帮忙!提前致谢。

【问题讨论】:

  • 您是否从 fire-base 控制台发送了消息。
  • 是的,来自 firebase 控制台它的工作。
  • 您在仪表板的 Cloud Functions 日志中收到什么消息?
  • 这是我得到的响应结果:[ { error: [Object] } ], canonicalRegistrationTokenCount: 0, failureCount: 1, successCount: 0, multicastId: 5973854734577752000 } 函数执行耗时 1497 ms,完成状态:'ok'
  • 您确定要发送到相应的令牌吗?您能否也将您的代码发布为onMessageReceived()

标签: android firebase firebase-cloud-messaging google-cloud-functions


【解决方案1】:

遇到了同样的问题,由于未显示错误详细信息,即 { error: [Object] }

Successfully sent message: { results: [ { error: [Object] } ], 
                             canonicalRegistrationTokenCount: 0, 
                             failureCount: 1, 
                             successCount: 0, 
                             multicastId: 5487635521698134000 
                           }

因此更改/添加了云功能代码中的日志以访问错误详细信息,即console.log(response.results[0].error);

代码(在云端函数中):

admin.messaging().sendToDevice(registrationToken, payload)
            .then(function(response) {
                console.log("Successfully sent message:", response);
                console.log(response.results[0].error);
            })
            .catch(function(error) {
                console.log("Error sending message:", error);
            });

错误详情:

{ Error: The provided registration token is not registered. A previously valid registration token can be unregistered for a variety of reasons. See the error documentation for more details. Remove this registration token and stop using it to send messages.
at FirebaseMessagingError.Error (native)
at FirebaseMessagingError.FirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:25:28)
at new FirebaseMessagingError (/user_code/node_modules/firebase-admin/lib/utils/error.js:130:23)
at Function.FirebaseMessagingError.fromServerError (/user_code/node_modules/firebase-admin/lib/utils/error.js:154:16)
at /user_code/node_modules/firebase-admin/lib/messaging/messaging.js:80:63
at Array.forEach (native)
at mapRawResponseToDevicesResponse (/user_code/node_modules/firebase-admin/lib/messaging/messaging.js:76:26)
at /user_code/node_modules/firebase-admin/lib/messaging/messaging.js:223:24
at process._tickDomainCallback (internal/process/next_tick.js:135:7)

errorInfo: 
   { code: 'messaging/registration-token-not-registered',
     message: 'The provided registration token is not registered. A previously valid registration token can be unregistered for a variety of reasons. See the error documentation for more details. Remove this registration token and stop using it to send messages.' } }

不知道你是不是和我一样的错误...

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 2017-09-28
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2018-01-19
    • 2021-05-27
    相关资源
    最近更新 更多