Google Clouding Messaging APIを使用してAndroid Appと統合しようとしています。バックエンドの場合、私はLaravel 5.2を使用しています。 Google APIで3つのapiキーを生成しました。これらはサーバAPIキー、Android APIキー、ブラウザAPIキーです。私はこのtutorialを参照しています。リクエストを送信中にエラーが発生しました。
これは、サーバーからのGCMサーバへの私のプッシュ要求である:
private function sendNotification($registatoin_ids,$message)
{
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registatoin_ids,
'data' => $message,
);
$headers = array(
'Authorization: key='.GOOGLE_API_KEY,
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Disabling SSL Certificate support temporarly
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
// Execute post
$result = curl_exec($ch);
if ($result === FALSE)
{
die('Curl failed: ' . curl_error($ch));
}
// Close connection
curl_close($ch);
echo $result;
}
function register(Request $request)
{
$name = $request->name;
$email = $request->email;
$gcm_regid = $request->reg_ids;
$registatoin_ids = array($gcm_regid);
$message = array("product" => "shirt");
$result = $this->sendNotification($registatoin_ids,$message);
echo $result;
}
私はレジスタ機能と呼ばれます。 email
,name
およびreg_ids
はモック値である。私はちょうどmyemail
、myname
とそれぞれランダムな文字列を渡しました。レジスタ機能はコントローラの動作です。 GOOGLE_API_KEY
については、サーバーapiキーを渡しました。しかし、私が要求すると、それは私に次のエラーを与えています。私のプッシュ要求は正しい
{"multicast_id":5065519232839143946,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
ですか? reg_ids
に一意の値を渡すことはできますか?また、私のGOOGLE_API_KEY
はAndroid、サーバー、またはブラウザのキーである必要がありますか?