2016-09-10 14 views
2

ウェブプッシュとは何ですか、私のプロジェクトにはどのように使用できますか? この例が見つかりましたhttps://mobiforge.com/design-development/web-push-notifications Firebase経由で通知を送信しようとすると、クラウドメッセージング(FCMはGCMの新バージョン)ウェブプッシュ通知でエラーが発生しました

{"multicast_id":6440031216763605980,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]} 

「無効な登録」とはどういう意味ですか?私は間違っているの?

私のPHPのカール、しかし、私は何の問題は、あなたが使用するサブスクリプションIDをチェックしてみてくださいここ

$link = "https://gcm-http.googleapis.com/gcm/send"; 

$header = array(); 
// $header[] = "Content-length: 0"; 
$header[] = "Content-type: application/json"; 
$header[] = "Authorization: key=AIzaSy..."; 

$contentArray = array(
    "collapse_key" => "All", 
    "registration_ids" => array(
     "gAAAAABX06BLKhA4n1yHNlsyzu02wxsDjZf89oxIljwM4ZdLpMZU7ty64TFEYahPQZaTmCeYlJo-WDWnfFHOKXzKURhNtRWmN0OgBgn9hJdmgatSGoiTkt69TeJpiD8F034WOr5HMEG2", 
    ), 
    "data" => array(
     "title" => "This is a Title", 
     "message" => "This is a GCM Topic Message!" 
    ) 
); 
$jsonData = json_encode($contentArray); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $link); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); 
$string = curl_exec($ch); 
echo $string; 

$data['curl'] = curl_errno($ch); 

if(!curl_errno($ch) && !strpos($string, "503")) 
    $data = array_merge($data, explode("\n", $string)); 

curl_close($ch); 

?><pre><? print_r($data); ?></pre><? 

一部Cosole.log

ServiceWorker registration successful with scope: https://.../app/ 
PushSubscription { endpoint="https://updates.push.ser...rjYvTTapou7WcEDgu3V7IOY", options=PushSubscriptionOptions, getKey=getKey(), ...} 
PushSubscription { endpoint="https://updates.push.ser...rjYvTTapou7WcEDgu3V7IOY", options=PushSubscriptionOptions, getKey=getKey(), ...} 
gAAAAABX06OYvBIk4q2rRF3AsE6UwRYUpzpZ0jpuiWz6TRrSptb8_cBKjy8Ci-_u5UtAyiGfAYJ_ycYnJjoukSuez7BN6UnSX-GL_EWNAWzEpAVMhCT2wrjYvTTapou7WcEDgu3V7IOY 
+0

FCMを使用していますが、古いGCMプロトコルでは、サポートされているかどうかわかりません。 https://github.com/web-push-libs/web-push-phpを使用することをお勧めします。そのため、自分で実装する必要はありません。 – Marco

+0

httpsの証明書がないためかもしれません。 –

答えて

0

からがないことを確信しています。

Check the responseで述べたように、

応答が無効な登録エラーが表示されている場合は、あなたが使用するサブスクリプションIDを確認してください。

GCMへのリクエストでさらに説明したように、cURLコマンドを実行するときは、必ず独自のAPIキーとサブスクリプションIDを使用してください。

詳細については、send a request from the command line for GCM to push a messageのマニュアルを参照してください。

0

動作しません。私はたくさんの時間をかけてきました。ここでは、以下の私は私の経験からポストマン

enter image description here

+1

あなたの場合は間違っているはずですAPIキー 認証を試してください:key = JGJHGj ... –

0

を試みた方法で、使用しているREGISTRATION_IDは、Firefoxブラウザ上のサブスクリプションからのようです。しかし、まだChromeプッシュサーバーに送信しようとしています。

AクロームREGISTRATION_IDはそのようになります。

APA91bGdUldXgd4Eu9MD0qNmGd0K6fu0UvhhNGL9FipYzisrRWbc-qsXpKbxocgSXm7lQuaEOwsJcEWWadNYTyqN8OTMrvNA94shns_BfgFH14wmYw67KZGHsAg74sm1_H7MF2qoyRCwr6AsbTf5n7Cgp7ZqsBZwl8IXGovAuknubr5gaJWBnDc

それはかなり新しい技術だとそれ以前のバージョンのコードはGoogleの開発者プラットフォーム上でまだ利用されているので、それは本当に簡単ではありません何をすべきかを理解する。私はまだそれを試しています。

これを確認してくださいcodelabこれは基本を理解する良い例です。

+0

クロムはこのようにエンドポイントを生成しています。 https://android.googleapis.com/gcm/send/fjKDZ-r5v_0:APA91bEYfGvr2lf8wjVs9br...Y85cTw2mYI_yCKyokk9qtoROXapvtr8oiXJnpOs44udr1i4yYK6zImm0n9TDy1PvKbMAiZM9Uz –

0

私はこの記事でも私の答えを共有したいと思います。

同じ無効な登録IDの問題についてはhttps://stackoverflow.com/a/40447040/4677062を確認してください。

解決済みです。期待どおりに動作します。

関連する問題