Amazon SNSでリモート通知(Push通知)をおこなう[AWS SDK for PHP][iOS]

2015年6月9日

ios

 

 

Amazon SNS(Amazon Simple Notification Service)サービスに登録し、AWS SDK for PHPを利用してiOS端末にリモート通知をおこなった。

 

 

概要


 

リモート通知(Push通知) [Swift][iOS8] (2/2)」では、デバイストークンを保存するプロバイダ側のデータベースとしてMySQLを利用したが、今回はアマゾン ウェブ サービス(Amazon Web Service)のひとつであるAmazon SNS/プッシュサービス(Simple Notification Service)を利用してiOS端末にリモート通知を送った。Amazon SNSは毎月100万件までは無料で通知をおこなうことができる。また無効トークン(Invalid Token)の処理を気にすることなく実装できる(※「実際の運用を巡って」の項を参照)。

 

通知の流れは基本的には前回のリモート通知の仕組みと変わらない。APNsから送られてきたデバイストークンをAmazon SNSに送り、そのトークン(Amazon SNSでは通称エンドポイントと呼ばれる)と紐付けられたiOS端末へ通知が送られるシステムとなっている。今回Amazon SNSをPHPで扱う際に「AWS SDK for PHP」を利用した。

 

今回は下記のイラスト図において主に23を実装する。

 

 

AmazonSNS

 

手順


 

iOSアプリは前回作成した「PushApp」プロジェクトアプリを利用する。iOS Dev Centerでの登録、証明書等の作成はすでに済んでいるものとする。

 

アマゾン ウェブ サービスに登録し、SNSサービスを利用できるようにしておく。

 

aws01

 

下記コンソール画面にて左メニューの「Application」をクリックする。

 

aws02

 

「Create platform application」をクリックする。

aws03

 

以下項目を登録、証明書をアップロードする。

 

aws04

 

Application name:分かりやすいようにiOSアプリのプロジェクト名で登録した。今回は「PushApp」という名前で登録。

 

Push notification platform:プッシュ通知をする環境を選ぶ。今回はiOSデバイスの開発環境においてリモート通知をおこなうので、「Apple Push Notification Service Sandbox(APNS_SANDBOX)」を選択する。

 

Choose file」でP12形式の証明書(push_develop.p12の生成を参照)を選んだら、パスワードを入力し(証明書生成時にパスワードを設定した場合)、「Load Credentials from File」をクリックする。すると「Certificate」と「Private Key」が自動で表記されるので、「Create platform application」をクリックする。

 

 

■エンドポイント(endpoint)の登録

 

aws05

 

上記Applications画面にて登録したアプリ名(PushApp)にチェックを入れると「Create platform endpoint」ボタンがアクティブになるのでクリックする。エンドポイント(endpoint)はAmazon SNSにおいてのデバイストークンの通称であり、APNsから返ってきた値から<>とスペースを削除した文字列を登録する(前回記事のSwiftコードを参照)。「User data」を適当に入力したら、「Add endpoint」をクリックして登録完了。

 

aws06

 

 

■まずはコンソール画面からのリモート通知

 

「ARN」(Amazon Resource Name)の項をクリックする。

 

aws07

 

 「Publish to endpoint」をクリックする。

 

aws08

 

Messageにテキストを書き込み、「Publish message」をクリックするとエンドポイント(デバイストークン)として登録したiOS端末にリモート通知が実行される。

 

aws09

 

 

■デバイストークンをAmazon SNSへ登録する

 

上記の方法では、あらかじめデバイスのエンドポイント(デバイストークン)をAmazon SNSのコンソール画面上で登録しなければならない。そこでiOSデバイスからトークンをAmazon SNSに登録できるようにする。今回は「AWS SDK for PHP」を利用する。

 

流れとしては以下のようになる(イラスト図の2の部分)。

iOS → register_sns.php → Amazon SNS

 

まず前回ブログの「2.デバイストークンをプロバイダへ送る」の項目、Xcode(Swift)13行目において、トークンをPOSTする先をregister_sns.phpに変更しておく。

 

 

register_sns.php

 

 

■リモート通知をおこなう

 

次にAWS SDK for PHPを利用してリモート通知をおこなう(イラスト図の3の部分)。ファイル名をpush_sns.phpにした。

 

 push_sns.php

 

push_sns.phpを実行するとデバイスへリモート通知がおこなわれる。

 

以上

 

 

参照サイト


 

Amazon SNS モバイルプッシュを使用するために必要な手順の概要

 

Amazon SNS モバイルプッシュ API の使用

 

Amazon SNS Mobile Push (PDF)

 

 Sending Amazon SNS from my PHP server

 

AWS SDK for PHPを利用したAmazon SNSのMobile Push

 

[AWS][iOS] Amazon SNS で APNs に大量 Publish してみた

 

Copyright © 2019 アクト・オブ・リーディング All Rights Reserved.  プライバシーポリシー