amazon SNSでスマホアプリにプッシュ通知をする方法(PHP編)

先日、amazon SNSについてのまとめ記事を書きました。今回は具体的にPHPのサンプルコードをのせたいと思います。
公式SDKをつかう
公式SDKはこちら。composerを使ってインストールしてください。また、アクセスキーとシークレットキーは事前にAWSコンソールから作成しておきます。デバイストークンはアプリで取得したものを送信しているものとします。
require 'vendor/autoload.php'; use Aws\Sns\SnsClient; $sns = SnsClient::factory(array( 'credentials' => [ 'key' => アクセスキー, 'secret' => シークレットキー ], 'region' => 'ap-northeast-1', 'version' => 'latest' )); //devicetokenからエンドポイントを取得 $options = array( 'PlatformApplicationArn' => アプリケーションのARN, 'Token' => デバイストークン, 'CustomUserData' => $name ); try { $result = $sns->createPlatformEndpoint($options); $endpoint = $result['EndpointArn']; // 送信するメッセージ $message = array( 'default' => 'メッセージ', 'APNS' => json_encode(array( 'aps' => array( 'alert' => array( 'title' => 'タイトル', 'body' => '内容です' ) ), 'scheme' => "" ) ) ); //トピック(グループを作成) $topicname = 'topic'; $result = $sns->createTopic(array( 'Name' => $topicname )); $topicArn = $result['TopicArn']; //エンドポイント分だけ繰り返し $params = [ 'Endpoint' => $endpoint, 'Protocol' => 'application', 'TopicArn' => $topicArn ]; $sub = $sns->subscribe($params); // プッシュ通知 $sns->publish(array( 'TargetArn' => $topicArn, 'Message' => (string) json_encode($message), 'MessageStructure' => 'json' )); //サブスクリプションを削除 $sns->unsubscribe(array( 'SubscriptionArn' => $sub['SubscriptionArn'] )); // 作ったトピックを削除 $result = $sns->deleteTopic(array( 'TopicArn' => $topicArn, )); } catch(\Exception $e){ //エラー処理 }
これで完了。覚えてしまえば、かんたんですね。
参考)Amazon Simple Notification Service ドキュメント
SHARE
スキルアップにMENTA
MENTAはいろんなプロに相談できるNo1メンターサービスです。
僕自身もプロダクトの壁打ち・相談にのっています。個人開発でもコードレビュー、セキュリティ面のチェック、デザイン、広告、コンテンツマーケ、SNS集客について相談する、など使えます。
YouTubeでも発信中!
PROFILE

入江 慎吾
あらゆるスキルが学べるパーソナルメンターサービスMENTAの代表/個人開発が好きでこれまでに30個ほどのWEBサービスやアプリを作ってきました/福岡のWEB制作会社勤務→フリーランスエンジニア→法人立ち上げ→M&A億単位の売却を経験。 (詳しいプロフィール)
あらゆるスキルが学べるパーソナルメンターサービスMENTAの代表/個人開発が好きでこれまでに30個ほどのWEBサービスやアプリを作ってきました/福岡のWEB制作会社勤務→フリーランスエンジニア→法人立ち上げ→M&A億単位の売却を経験。 (詳しいプロフィール)