業務中にプッシュ通知を実装する必要になり、開発していたのですがいくつかハマった点があったので自分用のメモとして残します。
スポンサーリンク
ハマった点
service-worker.jsのディレクトリに注意
service-worker.jsでコントロールできるページはservice-worker.jsを置いたディレクトリ以下です。
scopeで範囲を指定できますが、これも置いたディレクトリ以下の中からになります。
エラー「invalidRegistration」
Google CloudMessageでプッシュ通知を送ろうとする「invalidRegistration」というエラーが返ってきます。
下記のコードだと正常に送信されます。
※registration_idsをtoにするといいという記事がいくつかありますが、registration_idsでOK
$googleapi_key = "APIkey"; //プッシュ通知先設定 $registration_ids = array("subscription_id"); $data = array( 'registration_ids' => $registration_ids, ); $header = array( 'Authorization: key='.$googleapi_key, 'Content-Type: application/json', ); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://android.googleapis.com/gcm/send'); curl_setopt($curl, CURLOPT_PORT , 443); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); curl_setopt($curl,CURLINFO_HEADER_OUT,true); $response = curl_exec($curl); curl_close($curl);