0

Ich entwickle eine Chat-App, die auf Firebase-Datenbank und Storage basiert. Alles funktioniert gut, aber jetzt brauche ich die Implementierung von FCM, um Benachrichtigungen in der App zu erhalten, wenn die App im Hintergrund oder Vordergrund ist. Ich kann keinen Weg finden, um in PHP zu implementieren, die irgendwelche Änderungen in Firebase-Datenbank zu hören und wenn es irgendwelche Änderungen gibt, dann senden Push-Benachrichtigung an App.So senden Sie FCM Benachrichtigung an App aus dem Web

Es gibt so viele Codes, die Benachrichtigungen von PHP senden, aber keine basieren auf der Firebase-Datenbank, und sogar die offizielle Dokumentation enthält den Node.js-Leitfaden, den mein gemeinsam genutztes Hosting nicht unterstützt.

Ich habe bereits FCM-Code auf meiner App-Seite implementiert, der von Firebase Console getestet wird.

Hier ist meine Firebase Datenbankstruktur Firebase Database Structure

+0

verwenden. :) –

+0

Sie sollten sich [Cloud-Funktionen für Firebase] (https://firebase.google.com/docs/functions/) ansehen. Speziell bei [Realtime Database Triggers] (https://firebase.google.com/docs/functions/database-events). –

+0

@ AL.my Server unterstützen nicht Npm – Ritu

Antwort

2

eine Push-Benachrichtigung gesendet wird nur eine Frage der eine Post-Anforderung an FCM-Server zu senden.

Hier arbeitet Beispiel:

$data = json_encode($json_data); 
//FCM API end-point 
$url = 'https://fcm.googleapis.com/fcm/send'; 
//api_key in Firebase Console -> Project Settings -> CLOUD MESSAGING -> Server key 
$server_key = 'YOUR_KEY'; 
//header with content_type api key 
$headers = array(
    'Content-Type:application/json', 
    'Authorization:key='.$server_key 
); 
//CURL request to route notification to FCM connection server (provided by Google) 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$result = curl_exec($ch); 
if ($result === FALSE) { 
    die('Oops! FCM Send Error: ' . curl_error($ch)); 
} 
curl_close($ch); 

Beispiel der JSON Nutzlast:

[ 
    "to" => 'DEVICE_TOKEN', 
    "notification" => [ 
     "body" => "SOMETHING", 
     "title" => "SOMETHING", 
     "icon" => "ic_launcher" 
    ], 
    "data" => [ 
     "ANYTHING EXTRA HERE" 
    ] 
] 
+0

Ich muss die richtige Implementierung mit Datenbank auch tun, die ich nirgendwo finden kann. Ich bin nicht gut in PHP können Sie mir bitte helfen. Dank – Ritu

+0

Daten aus Ihrer Datenbank holen, und bauen Sie diese playload Nachricht das ist alles – meda

+0

@meda Ich hatte eine Frage ... In diesem Fall, was wird der Server-Schlüssel, wenn ich will eine Benachrichtigung an das iOS-Gerät senden? Oder wie man PEM-Datei verwendet, um eine Benachrichtigung an iOS-Gerät zu senden? – Amarja

0

Sie Postman stattdessen verwenden können. Öffnen Sie Postman-Erweiterung in Chrom und verwenden Sie die POST-URL https://fcm.googleapis.com/fcm/send.

enter image description here

enter image description here

+0

App Seitenbenachrichtigung funktioniert gut, ich überprüft über FCM Konsole – Ritu

1

diesen Code Versuchen Sie es für mich arbeitet ein Postbote Android als auch iOS

<?php 
    $url = "https://fcm.googleapis.com/fcm/send"; 
    $token = "your device token"; 
    $serverKey = 'your server token of FCM project'; 
    $title = "Notification title"; 
    $body = "Hello I am from Your php server"; 
    $notification = array('title' =>$title , 'text' => $body, 'sound' => 'default', 'badge' => '1'); 
    $arrayToSend = array('to' => $token, 'notification' => $notification,'priority'=>'high'); 
    $json = json_encode($arrayToSend); 
    $headers = array(); 
    $headers[] = 'Content-Type: application/json'; 
    $headers[] = 'Authorization: key='. $serverKey; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"POST"); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json); 
    curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); 
    //Send the request 
    $response = curl_exec($ch); 
    //Close request 
    if ($response === FALSE) { 
    die('FCM Send Error: ' . curl_error($ch)); 
    } 
    curl_close($ch); 
?> 
+0

danke. wird nach der Überprüfung aktualisiert – Ritu

Verwandte Themen