2017-03-04 7 views
0

私はプッシュメッセージプログラムを作成しました。これはfirebase.google.comを使用しています。 javascriptを使ってプッシュメッセージを送信すると、メッセージは完璧ですが、プルメッセージをPHPのcurlで送信した場合、メッセージはPHPのファイルと同じではありません。 php curlを使って送信すると、メッセージはservice-worker.jsに書き込まれたメッセージになります。 なぜですか?カール間違ったデータでメッセージをプッシュ

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

_値は静的であるため、「メッセージはservice-worker.jsで書き込んだものになります」_ JSは自動的にそれらの値を置き換えることはありません。イベントデータのペイロードから本文、アイコンなどを設定するコードを記述する必要があります –

答えて

0

は、訪問者がサインアップしたときに、私はjavascriptを経由して、メッセージを送信しない、 をありがとうありがとう。 例えば5日後にPhp Curlを使ってメッセージを送信します。 メッセージを送信すると、私はJavaScriptを書いたものになります。私はメッセージを送るとき、私は5日後にのみPHPのカールを使用します!

PHPのcurlで$ msgの値がどうしてですか?それを使わないのはなぜですか?

ありがとう

関連する問題