SNSでプッシュ通知を行う方法でiOSの情報はたくさんあったけど、Androidの情報がなかったので、メモしておきます。
GCM登録してSNSに登録しようとしてもずっとエラーで登録できなかったですが、
Firebaseで登録して、Auth -> ウェブ設定(右上)に記載されているapiKeyを使用してSNSに登録したら通りました。
この辺の仕様が全くわからない…
詳しい人教えてください。
スポンサーリンク
SNSでCreate platform applicationしたので、ARNをメモってPHP書いていきます。
基本的なところは共通ですので、この辺参照していただけたら出来ると思う。
むしろこの記事見ればiOSはできちゃう。
PHPでiOSにPush通知するためにAmazon SNS Mobile Push APIを使ってみた | tatsushim's blog
ポイントはAWS SDKに対してpublishする前の値の持ち方。
iOS ( APNS )
$send_obj["MessageStructure"] = "json"; $send_obj["TargetArn"] = $targetEndpoint; $data_obj["alert"] = $message; $data_obj["badge"] = $badge; $data_obj['sound'] = 'default'; if ($custom_param) { $data_obj = array_merge($data_obj, $custom_param); } $aps_obj = json_encode(array("aps" => $data_obj)); $message_obj = json_encode(array("APNS" => $aps_obj)); $send_obj["Message"] = $message_obj; // AWS SKD SNSからプッシュ送る $this->client->publish($send_obj);
メッセージは"aps"=>"alert"に、"APNS"or"APNS_SANDBOX"を指定してあげる
Android ( GCM )
$send_obj["MessageStructure"] = "json"; $send_obj["TargetArn"] = $targetEndpoint; $data_obj["message"] = $message; $aps_obj = json_encode(array("data" => $data_obj)); $message_obj = json_encode(array("GCM" => $aps_obj)); $send_obj["Message"] = $message_obj; // AWS SKD SNSからプッシュ送る $this->client->publish($send_obj);
メッセージは"data"=>"message"に、"GCM"を指定してあげる
もっと指定できることはあると思うけど、最低限(?)これでいけます。
SNSでAndroidにプッシュ通知送るの初めてでわからないことだらけでした。特にSNSに登録する際にAPI KEYが使えなかったときとか…
Androidは普通にGCM・Firebaseで送りたい。