【PHP】Google Cloud Messageのハマった点、自分用のメモ

スポンサーリンク
Pocket
LINEで送る

業務中にプッシュ通知を実装する必要になり、開発していたのですがいくつかハマった点があったので自分用のメモとして残します。

 

ハマった点

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);

エラーコード一覧