2017-04-24 201 views
0

我使用Firebase发送来自Web的推送通知,但我无法发送推送通知,而我只能获取名称。如何使用Firebase发送来自Web的推送通知帮助我。我使用Firebase发送来自网络的推送通知

这是我的php代码。

<?php 
$DEFAULT_URL = 'https://pushnotificatioexample.firebaseio.com/.json'; 

$mytoken = $_POST['token']; 
$mymessage = $_POST['message']; 
echo $mytoken; 
echo '<br>'.'</br>'; 
echo $mymessage; 

$registrationIds = array($mytoken); 

$message = array 
     (
     'message' => 'My awesome message', 
     'title'  => 'My awesome title', 
     'subtitle' => 'My awesome subtitle', 
     'tickerText' => 'My awesome Ticker text', 
     'vibrate' => 1, 
     'sound'  => 1, 
     'largeIcon' => 'large_icon', 
     'smallIcon' => 'small_icon' 
     ); 

     $fields = array(
     'registration_ids' => $registrationIds, 
     'data' => $message 
     ); 

     $headers = array(
     'Authorization:key = AIzaSyC9M4KFwqdy3vjcIBx9TNO8M7IysADbY_s', 
     'Content-Type: application/json' 
     ); 

     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $DEFAULT_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, json_encode($fields)); 
     $result = curl_exec($ch);   
     if ($result === FALSE) { 
      die('Curl failed: ' . curl_error($ch)); 
     } 
     curl_close($ch); 
     echo $result; 
?> 
+0

你不是应该使用FCM端点('的https :// fcm.googleapis.com/fcm/send')而不是'https:// pushnotificatioexample.firebaseio.com/.json'? –

回答

0

它看起来像你从你的服务端脚本发送云消息。根据Firebase(FCM)的官方文档,您不必使用实时数据库和全部网址。所以,你必须改变你的网址

$DEFAULT_URL = 'https://pushnotificatioexample.firebaseio.com/.json'; 

TO

$DEFAULT_URL = 'https://fcm.googleapis.com/fcm/send'; 

详情请参见该Firebase Cloud Messaging HTTP Protocolhere

+0

感谢它的工作 – romil

+0

很高兴知道这是行之有效的。请标记它的答案,并提高它。所以这对其他人会有所帮助。 –