Parse.comの代替としてAmazonSNSを使う
Parse.com終わりますね..
あちこちで悲鳴が聞こえます... Facebookに買収されたから安心していたんですけどね..
AmazonSNSにします
Amazon SNSでモバイルPush/HTTP Push通知
いろいろ比較しましたが乗り換え先はAmazonSNSに決めました。決め手はAmazonだから(..過去から学んでない)、価格、API、Webコンソールが便利。などです。
クラウドのサービスはGoogle Cloud Platformをメインに使っているのでFirebaseを検討しましたがPush通知機能が無いので諦めました。(今後に期待)
fastlane pemは便利だった
サンプルアプリでAmazonSNSの動作を確認しようとしてPush通知の設定を忘れていました。調べてみると最近はfastlane pemなるものがあり便利でした。(fastlaneは言語ごとのスクリーンショットを保存できたり他にも便利機能ありますよね)
インストール
$sudo gem install pem
証明書作成
$pem --development
AmazonSNSの設定
(1)アプリケーション作成ボタンクリック
(2)アプリケーション設定
fastlane pemで作成した.p12ファイルを選択した後に、Load Credentials from FileボタンをクリックするとCertificateとPrivate Key項目は自動で設定されます。
(3)エンドポイント作成ボタンクリック
(4)エンドポイント設定
(5)Publishボタンクリック
(6)Publish設定
(7)Push通知受信
無事通知来ました
AmazonSNS APIを使う
API経由でエンドポイント作成とパブリッシュを行います。
composer install
PHPのライブラリがあるので簡単です
"aws/aws-sdk-php": "3.*"
エンドポイント作成
Laravelのコマンドに実装しました
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Aws\Sns\SnsClient; class PublishPushNotification extends Command { protected $signature = 'aws-sns:publish'; protected $description = 'This command will publish a notification'; public function handle() { $sns = new SnsClient([ 'credentials' => [ 'key' => 'xxxx', 'secret' => 'xxxx' ], 'region' => 'us-west-2', 'version' => '2010-03-31' ]); // Create Endpoint $arn = 'arn:aws:sns:xxxx'; $token = 'xxxx'; $options = array( 'PlatformApplicationArn' => $arn, 'Token' =>$token, 'CustomUserData' => '', ); try { $result = $sns->createPlatformEndpoint($options); echo $result['EndpointArn']; } catch (Exception $e) { echo $e->getMessage(); // TODO logging } }
パブリッシュ
// Publish $arn = 'arn:aws:sns:xxxx'; $options = array( 'Message' => 'Hello!', 'TargetArn' => $arn ); try { $result = $sns->publish($options); echo $result['MessageId']; } catch (Exception $e) { echo $e->getMessage(); // TODO logging }
まとめ
以下がTODOです。今度やります。
- 言語毎のメッセージ分けを簡単にできないかな
- IAMで権限を絞る
あとiOS9からプッシュ通知に変更があったの知らなかったのでメモしておきます。
WWDC 2015 – Big changes to Apple push notifications
- Push notification actions
- APNS token size
- Providers API
参考
Amazon SNSでモバイルPush/HTTP Push通知
WWDC 2015 – Big changes to Apple push notifications
Amazon Simple Notification Service
AWS SDK for PHPのVersion 3に更新して、EC2自動起動処理を書き換えてみた