【Amazon SNS】PHPでiOSとAndroidにプッシュ通知する方法

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

qiita.com

qiita.com

ポイントは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で送りたい。