2017-03-04 29 views
0

我创建了一个Push消息程序,它使用firebase.google.com。 如果通过JavaScript发送推送消息的消息是完美的,但如果我发送推送消息与Php卷曲消息不一样,我写的PHP文件。 如果我通过Php curl发送消息,那么我将在service-worker.js中写入消息。 这是为什么?通过curl错误的数据推送消息

PHP代码

function send_push_message($subscription){ 
if (empty($subscription)) return FALSE; 
$ch = curl_init(); 
    switch ($subscription["browser"]){ 
     case "firefox": 
      curl_setopt($ch, CURLOPT_URL, "https://updates.push.services.mozilla.com/push/".$subscription["id"]); 
      curl_setopt($ch, CURLOPT_PUT, TRUE); 
      curl_setopt($ch, CURLOPT_HTTPHEADER, array("TTL: 86400")); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
     break; 

     case "chrome": 

     /** 
     * https://console.firebase.google.com 
     * http://stackoverflow.com/questions/37427709/firebase-messaging-where-to-get-server-key 
     */ 
      // API access key from Google API's Console 
      define('API_ACCESS_KEY', '<API_SZERVER_KULCSOM>'); 

      $registrationIds = array($_GET["id"]); 
      // prep the bundle 
      $msg = array 
      (
       'message' => 'My text', 
       'title'  => 'This is a title. title', 
       'subtitle' => 'This is a subtitle. subtitle', 
       'tickerText' => 'Ticker text here...Ticker text here...Ticker text here', 
       'vibrate' => 1, 
       'sound'  => 1 
     ); 
      $fields = array 
      (
       'registration_ids' => $registrationIds, 
       'data'  => $msg 
     ); 

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

      $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_URL, "https://gcm-http.googleapis.com/gcm/send"); 
      curl_setopt($ch,CURLOPT_POST, true); 
      curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
      curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
      curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 
      $response = curl_exec($ch); 
      echo $response; 
      if($response === false){ 
       echo 'Hiba: '.curl_error($ch); 
      }else{ 
       echo 'Siker'; 
      } 
      curl_close($ch); 
     break; 
    } 
} 
$tomb["browser"] = "chrome"; 
$tomb["id"] = $_GET["id"]; 
if(isset($_GET["id"])){ 
    send_push_message($tomb); 
} 

服务worker.js

self.addEventListener('push', function(event) { 
var title = 'xxxxxx'; 
var body = 'Szerbusz YYY'; 
var icon = '/images/icon-192x192.png'; 
var tag = 'simple-push-demo-notification-tag'; 
event.waitUntil(
    self.registration.showNotification(title, { 
    body: body, 
    icon: icon, 
    tag: tag 
    }) 
); 
}); 

谢谢

+0

_“的消息将是我在服务worker.js写道:” _因为你的价值的是静态的。 JS不会为你自动替换这些值。你必须编写代码来设置事件数据有效载荷的主体,图标等 –

回答

0

谢谢你,我 不发送消息时,游客报名,通过JavaScript。 例如5天后通过Php Curl发送消息。 发送消息将是我写的JavaScript。当我发送消息时,5天后我只使用Php卷曲!

为什么在msp中的$ msg值会卷曲,如果不用的话?

感谢