4

在android應用程序中,我使用FCM發送通知,雲功能成功執行,如firebase控制檯日誌中所示,但在我的設備中未顯示任何通知,可能是原因?雲功能執行成功,但通知不顯示android

下面是代碼爲我的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); 
      }); 
      }); 
      }); 

請幫助!提前致謝。

+0

你從發送消息消防基地控制檯。 –

+0

是來自Firebase控制檯的工作。 – sara

+0

您在儀表板中的雲功能日誌中收到什麼信息? –

回答

2

有同樣的問題,無法理解,因爲並沒有表現出錯誤的詳細信息什麼是錯的,即{錯誤:[對象]}

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.' } } 

不知道,如果你有我做同樣的錯誤...