コンテンツへスキップ →

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 ドキュメント

Webサービスのメール配信で到達率を高めるべくSendGridを使ってみる

SHARE

スキルアップにMENTA

MENTAはいろんなプロに相談できるNo1メンターサービスです。

僕自身もプロダクトの壁打ち・相談にのっています。個人開発でもコードレビュー、セキュリティ面のチェック、デザイン、広告、コンテンツマーケ、SNS集客について相談する、など使えます。

YouTubeでも発信中!

PROFILE

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

カテゴリー: スマホアプリ開発