0

PHPを使用してプッシュ通知を送信することを検討しようとしています。 問題は、サービスワーカーをブラウザに登録してPHPから直接通知を送信する方法です。PHPを使用したGoogleクラウドメッセージング(GCM)

私はバックエンド部分のコードのサンプルを得た:私はそれがだと思う

{"multicast_id":7003820144951503575,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"NotRegistered"}]} 

:私はこのスクリプトを実行しようとしているときに

<?php 
     define('API_ACCESS_KEY', 'SOME KEY'); 
     $registrationIds = array('fK_LVMivilI:APA91bHCXawEoNXc0Avwk4F6iYsshn4mmWX6jysrg8gC9PGA6_AlqWtr1HXhIMonCCUj8syOlsDGTFJVu_T3aPqdMNynqy7SY5L9OBlgolu-7L2a5pwZrB7kN_bdnUPeZHJQ1HT2i2ed'); 
     $msg = array 
     (
      'message' => 'here is a message. message', 
      '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, 
      'largeIcon' => 'large_icon', 
      'smallIcon' => 'small_icon' 
     ); 
     $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://android.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)); 
     $result = curl_exec($ch); 
     curl_close($ch); 
     echo $result; 

を、私は次のエラーを取得していますブラウザにサービスワーカーが登録されていないためです。

したがって、必要に応じてPHPとJavaScriptを使用して動的コンテンツで通知を送信するには、解決策が必要です。

アドバイスがあります。

+0

登録IDを確認してください。それが正しいか ? –

答えて

1

プッシュメッセージングの実装でサービスワーカーを登録する方法については、documentationを確認してください。ここでは、サービスワーカーにウェブのプッシュメッセージを実装する依存関係があると述べられています。その理由は、プッシュメッセージが受信されると、ブラウザは、ページが開かれずにバックグラウンドで実行されるサービスワーカーを起動し、そのプッシュメッセージの処理方法を決定できるようにイベントをディスパッチすることができるからです。

これはサンプルコードです。サービス労働者の詳細については

var isPushEnabled = false; 

… 

window.addEventListener('load', function() { 
var pushButton = document.querySelector('.js-push-button'); 
pushButton.addEventListener('click', function() { 
if (isPushEnabled) { 
unsubscribe(); 
} else { 
subscribe(); 
} 
}); 

// Check that service workers are supported, if so, progressively 
// enhance and add push messaging support, otherwise continue without it. 
if ('serviceWorker' in navigator) { 
navigator.serviceWorker.register('/service-worker.js') 
.then(initialiseState); 
} else { 
console.warn('Service workers aren\'t supported in this browser.'); 
} 
}); 

、このチュートリアルをチェックしてください。

+0

私にとっての主な問題は、PHPのバックエンドからデータを送信し、サービスワーカー通知を補充することです。 – Viktor

関連する問題