0

我有一個使用Firebase的android 客戶端應用程序和和管理應用程序。每當用戶在客戶端應用程序中註冊時,我都需要向管理員應用發送推送通知。我正在嘗試使用Cloud Functions for Firebase。我已經導出了該功能,並且我也可以在Firebase控制檯上看到該功能。使用Google雲端功能和Google Firebase推送通知

enter image description here

這是我index.js

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


exports.sendMessageToAdmin = functions.database.ref('/tokens/users/{userId}/{regToken}').onWrite(event => { 

    if (event.data.previous.exists()) { 
    return; 
    } 

    const userId = event.params.userId; 
    const regToken = event.params.regToken; 

    // Notification details. 
    const payload = { 
     notification: { 
     title: 'You have a new User.', 
     body: `${userId} is the id.`, 
     } 
    }; 
    return admin.messaging().sendToDevice(regToken, payload); 
}); 

這裏是我的數據庫結構的火力點:

enter image description here

如果我使用任何門戶網站發送推送甚至FCM發送推送到管理應用程序的測試目的,我收到了推。但是這個雲端功能並沒有發送這個推送。有人能指導我什麼是錯的,我正在做。

編輯

如果我改變功能的以下內容,然後它的作品。但我仍然想知道爲什麼上述功能不起作用。

exports.sendMessageToAdmin = functions.database.ref('/tokens/users/{userId}').onWrite(event => { 


    if (event.data.previous.exists()) { 
    return; 
    } 

    const userId = event.params.userId; 
    var eventSnapshot = event.data; 
    const regToken = eventSnapshot.child("regToken").val(); 

    Notification details. 
    const payload = { 
     notification: { 
     title: 'You have a new User.', 
     body: `${userId} is the id.`, 
     } 
    }; 
    return admin.messaging().sendToDevice(regToken, payload); 
}); 
+0

您是否收到成功或錯誤響應? –

+0

添加日誌語句並在Firebase控制檯的日誌窗格中查找輸出:'console.log('userId:',userId,'token:',regToken);' –

+0

Firebase日誌輸出說什麼?您可以在Firebase控制檯的「功能 - >日誌」下找到它。 –

回答

1

在你的原代碼,您有:

const regToken = event.params.regToken; 

event.params.regToken不返回regToken它返回wildcard path segment的參考值的值。