0

Ich möchte Benachrichtigungen zu einer Online-Chat-App hinzufügen, die ich gemacht habe. Ich bin neu in Cloud-Funktionen, so dass ich versuchte, den Code hier gegebenen https://firebase.googleblog.com/2016/08/sending-notifications-between-android.htmlCloud-Funktion funktioniert nicht


Mein index.js

var firebase = require('firebase-admin'); 
var request = require('request'); 

var API_KEY = "xyz"; // Your Firebase 
Cloud Messaging Server API key 

// Fetch the service account key JSON file contents 
var serviceAccount = require("firebase.json"); 

// Initialize the app with a service account, granting admin privileges 
firebase.initializeApp({ 
credential: firebase.credential.cert(serviceAccount), 
    databaseURL: "https://firebaseio.com/" 
}); 
ref = firebase.database().ref(); 

function listenForNotificationRequests() { 
var requests = ref.child('notificationRequests'); 
requests.on('child_added', function(requestSnapshot) { 
var request = requestSnapshot.val(); 
sendNotificationToUser(
    request.username, 
    request.message, 
    function() { 
     console.log('notificationrecived, sent and removed- ' + 
request.username + ' '+ request.message,); 
    requestSnapshot.ref.remove(); 
    } 
); 
}, function(error) { 
    console.error(error); 
}); 
}; 

function sendNotificationToUser(username, message, onSuccess) { 
request({ 
url: 'https://fcm.googleapis.com/fcm/send', 
method: 'POST', 
headers: { 
    'Content-Type' :' application/json', 
    'Authorization': 'key='+API_KEY 
}, 
body: JSON.stringify({ 
    notification: { 
    title: message 
    }, 
    to : '/topics/'+username 
    }) 
    }, function(error, response, body) { 
    if (error) { console.error(error); } 
    else if (response.statusCode >= 400) { 
    console.error('HTTP Error: '+response.statusCode+' - ' 
    +response.statusMessage); 
    } 
    else {n 
    onSuccess(); 
    } 
    }); 
    } 

    // start listening 
    listenForNotificationRequests(); 

Datei ich erfolgreich diesen Code auf dem Server bereitgestellt haben mit node.js Befehlszeile . Aber das erscheint nicht auf der Konsole und noch die Protokolle, die ich zum Debug hinzugefügt und der Code scheint nicht zu funktionieren. Ich habe alles getan, was in dem Link erwähnt wurde. Ich könnte etwas Hilfe verwenden, um meinen Code zu beheben

+0

Hallo Chirag. Was genau funktioniert nicht? Gibt es einen Fehler? –

+0

nein, überhaupt kein Fehler. es reagiert einfach nicht auf Änderungen in der Datenbank –

+0

auch die Bereitstellung zeigt erfolgreich in node.js Kommandozeile aber keine Bereitstellung wird in Firebase Konsole angezeigt –

Antwort

0

Ich weiß nicht, wie groß der Unterschied das macht, aber in der Firebase Admin-Seite https://firebase.google.com/docs/admin/setup eingerichtet, wird erwähnt, dass für Cloud-Funktionen die folgende Zeile ist ausreichend für die Initialisierung: - So

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

, wenn Sie durch das Buch gehen, können Sie die Initialisierung Zeile im Code mit dem oben ersetzen und versuchen Sie es erneut aus.

+0

Danke Rohan, aber ich habe versucht, mit anderen Code, und es hat gut für mich funktioniert –

+0

Sicher, was auch immer funktioniert! –

Verwandte Themen