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