LoginSignup
3
4

More than 5 years have passed since last update.

AWS SNSを使ったプッシュ通知のサンプルプログラム(トピック版)

Last updated at Posted at 2016-09-28

AWS SNSを使ってプッシュ通知を送る方法のうちの一つ、トピックを作成してエンドポイントを追加し送信するサンプルです。
一度に複数の端末へ送信する場合、この方法を使うかと思います。

topic_push_test.php
<?php
require(dirname(__FILE__).'/vendor/autoload.php');
use Aws\Sns\SnsClient;
use Aws\Sns\Exception\SnsException;

date_default_timezone_set('Asia/Tokyo');

// 送信するメッセージ作成
$message = array(
    'default' => "メッセージ",
    'APNS' => json_encode(array(
        'aps' => array(
            'alert' => "メッセージ"
        ),
        'scheme' => ""
    )),
    'GCM' => json_encode(array(
        'data' => array(
            'message' => "メッセージ",
            'scheme' => ""
        )
    ))
);

$sns = SnsClient::factory(array(
    'credentials' => [
        'key'    => 'キー',
        'secret' => 'シークレット',
    ],
    'region' => 'リージョン名',
    'version' => 'バージョン',
));

try {
    // トピック生成
    $result = $sns->createTopic(array(
        'Name' => 'トピック名',
    ));
    $topicArn = $result['TopicArn'];

    // トピックにエンドポイントを追加
    // 複数エンドポイントがある場合はこの処理を繰り返す
    $params = [
        'Endpoint' => 'エンドポイント',
        'Protocol' => 'Application',
        'TopicArn' => $topicArn,
    ];
    $result = $sns->subscribe($params);

    // プッシュ通知
    $sns->publish(array(
        'TargetArn' => $topicArn,
        'Message' => (string) json_encode($message),
        'MessageStructure' => 'json'
    ));

    // 作ったトピックを削除する場合は以下を実行
//            $result = $sns->deleteTopic(array(
//                'TopicArn' => $topicArn,
//            ));

} catch(SnsException $e) {
    // エラー出力
}

送信するメッセージはandroid、ios両方に対応して、JSON形式で送ることを想定しています。この部分が送りたい内容によって書き換えが必要です。
トピック名は任意でつけられます。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4