[AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知
-
Upload
amazon-web-services-japan -
Category
Documents
-
view
16.697 -
download
9
Transcript of [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知
![Page 1: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/1.jpg)
AWSマイスターシリーズ番外編 Amazon SNS モバイルプッシュ通知
2013.09.17 アマゾン データ サービス ジャパン株式会社
ソリューション アーキテクト 安川 健太 篠原 英治
![Page 2: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/2.jpg)
今日のAgenda
モバイルプッシュ通知について
Amazon SNSモバイルプッシュ通知機能 • 機能概要
• SDK, IDE
• 料金・無料使用枠
Amazon SNSでモバイルプッシュ通知を使うまで
Q&A
![Page 3: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/3.jpg)
モバイルプッシュならアプリが起動していなくても通知が可能
• ユーザは通知を受け取るか否か
設定可能
• 特定のデバイス上の特定のアプリにのみ通知する事も
• 送るのは短いメッセージ: 読んで無視するも、アプリを起動するも
![Page 4: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/4.jpg)
クラウドから特定のデバイス上の特定のアプリに通知可
クラウド上の
プログラム モバイル・アプリ
![Page 5: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/5.jpg)
通知は各プラットフォーム独自の仕組みで送信
クラウド上のプログラム
モバイルアプリ
モバイル
プラットフォーム (e.g. Apple,
Google, Amazon)
![Page 6: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/6.jpg)
開発者側でデバイスごとのトークンおよびユーザの受信設定を管理
プラットフォーム
トークンの登録
トークンへのフィードバック
![Page 7: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/7.jpg)
通常プラットフォームごとに通知の方法は異なる
Apple APNS
Google GCM
Amazon ADM
• 異なるAPI
• 異なる機能
• 異なるフィードバック機構
![Page 8: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/8.jpg)
一般に数百万のデバイスへの通知の管理運用は大きな問題に
クラウド上のプログラム
プラットフォーム モバイルアプリ
![Page 9: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/9.jpg)
そのため、プラットフォームごとのAPIを抽象化した中間プロバイダを利用するのが一般的
モバイルアプリ 中間プロバイダ
![Page 10: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/10.jpg)
開発者側でプラットフォームを抽象化するサービスを利用することで得られるもの、得られないもの
どのプラットフォーム上のアプリのユーザでも抽象化出来る
信頼性のある通知のためのトークンは管理可能
運用の複雑さの回避
スケーラビリティの確保の
コスト – プラットフォーム側が無料だとしても
![Page 11: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/11.jpg)
Amazon SNS Mobile Pushはプラットフォーム横断型プッシュ通知のための中間マネージドサービス
Amazon SNS
Mobile Push
Apple Devices
Google Devices
Amazon Kindle Fire Devices
![Page 12: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/12.jpg)
Apple
Kindle
Fire
Kindle
Fire
Publish
Apple
Kindle
Fire
Kindle
Fire
Publish
SNSならプラットフォーム特有のメッセージペイロードを送ることも可
一度のPublish指示であらゆる端末へ
プラットフォームそれぞれに異なる
ペイロードを送信
![Page 13: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/13.jpg)
デバイスごとに異なるメッセージを送ることも、グループに一斉通知をすることも可
Publish
Publish
Publish
Publish
デバイスごとの直接通知 パートナー様を通じた場合等のシナリオ
1SNSトピックの
最大サイズは10,000 (2013年8月現在)
![Page 14: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/14.jpg)
メッセージサイズの上限はプラットフォームごと
• Apple Push Notification Service
• 256 bytes • https://developer.apple.com/library/ios/documentation/NetworkingInternet/Con
ceptual/RemoteNotificationsPG/Chapters/ApplePushService.html
• Amazon Device Messaging
• 6144 bytes • https://developer.amazon.com/sdk/adm/sending-message.html
• Google Cloud Messaging
• 4096 bytes • http://developer.android.com/intl/ja/google/gcm/adv.html
![Page 15: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/15.jpg)
SNSは各フラットフォームからのフィードバックを基にトークンの入れ替えや無効化を自動実行
Amazon SNS
Mobile Push トークンの登録
トークン
フィードバック
クラウド上のアプリケーション
• デバイスごとに安定したエンドポイントを提供
• トークンフィードバックは参照可能 (必ずしも参照しなくても利用可)
![Page 16: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/16.jpg)
SNSのスケーラビリティならアプリが必要とする分だけの通知をいつでも送信可能
• 数通のメッセージから億単位のメッセージまで
• 数個のデバイスから億単位のデバイスまで
...これらを設定管理の手間なしで
...堅牢性や信頼性を犠牲にすることなく
![Page 17: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/17.jpg)
広範な言語とプラットフォームをカバーするSDKとIDE
お好みの言語やプラットフォームのSDKを選択
…そしてお好みのIDEに統合
Eclipse Visual Studio CLI Powershell
Android iOS Java nodeJS .NET PHP Python Ruby
![Page 18: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/18.jpg)
SNSモバイルプッシュ通知はコンソールからでも利用可
• 簡単な手順でクロスプラットフォームな通知を実装可
• トークンをバッチ入力することで既存のデバイスの一斉登録も可
![Page 19: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/19.jpg)
料金・無料使用枠
1月あたり100万リクエスト • 100万のPublish(アプリSNS) • 100万のモバイルプッシュ通知(SNS各プラットフォーム)
以降は100万リクエスト当たり $1.00 • $0.50 で 100万publish (アプリSNS) • $0.50 で 100万モバイルプッシュ通知(SNS各プラットフォーム) Note:
- SNSトピック経由で送る方が全体の費用は削減できる
- 各プラットフォームへの支払いは特に無し
![Page 20: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/20.jpg)
Amazon SNS
Mobile Push
ここまでのまとめ:
• クロスプラットフォームプッシュ通知
(Apple, Google, Amazon)
• 1月100万リクエスト無料、以降は100万ごとに$1.00
• 堅牢性と信頼性とスケーラビリティを兼備
• 簡単なトークン管理
![Page 21: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/21.jpg)
今日のAgenda
• モバイルプッシュ通知について
• Amazon SNSモバイルプッシュ通知機能 – 機能概要
– SDK, IDE
– 料金・無料使用枠
• Amazon SNSでモバイルプッシュ通知を使うまで
• Q&A
![Page 22: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/22.jpg)
https://s3.amazonaws.com/codesamples/sns/latest/snsmobilepush.zip
サンプルアプリケーション
Androidアプリ
PushリクエストBatch
![Page 23: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/23.jpg)
AndroidアプリをEclipseでBuild
必要なライブラリ • Android SDK • Google Play Services
![Page 24: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/24.jpg)
Google apis設定およびKeyの取得 https://code.google.com/apis/console/
![Page 25: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/25.jpg)
Androidアプリを起動
![Page 26: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/26.jpg)
USB接続した実機で実行
![Page 27: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/27.jpg)
インストールされたAndroidアプリ
![Page 28: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/28.jpg)
インストールされたAndroidアプリ
![Page 29: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/29.jpg)
Management ConsoleからPush
![Page 30: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/30.jpg)
Management ConsoleからPush
![Page 31: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/31.jpg)
Management ConsoleからPush
![Page 32: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/32.jpg)
Device Tokenを端末から取得
import com.google.android.gms.gcm.GoogleCloudMessaging;
private GoogleCloudMessaging gcm;
gcm = GoogleCloudMessaging.getInstance(this);
token = gcm.register(getString(R.string.project_number));
![Page 33: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/33.jpg)
Management ConsoleからPush
CSVによるバルク登録機能も。ただし上限は2MBまで。
![Page 34: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/34.jpg)
Management ConsoleからPush
Push from Management Console
![Page 35: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/35.jpg)
Management ConsoleからPush
![Page 36: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/36.jpg)
Java BatchアプリからPush
![Page 37: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/37.jpg)
Java BatchアプリからPush
『AWS SDK提供のSNSライブラリでメッセージをPush』
• AWSのCredential(AccessKeyID と SecretAccessKey)でAmazon SNS用のClientオブジェクトを生成
↓
• Google apiのキー, Device Token, 送信メッセージを定義
↓
• 各プラットフォーム(Android, Apple, Kindle)用オブジェクトを生成
↓
• 送信先デバイスのEndpointを生成
↓
• Endpointにメッセージを送信
![Page 38: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/38.jpg)
Java BatchアプリからPush
• 各プラットフォーム(Android, Apple, Kindle)用オブジェクトを生成
CreatePlatformApplicationRequest platformApplicationRequest =
new CreatePlatformApplicationRequest();
Map<String, String> attributes = new HashMap<String, String>();
attributes.put("PlatformPrincipal", principal);
attributes.put("PlatformCredential", credential);
platformApplicationRequest.setAttributes(attributes);
platformApplicationRequest.setName(applicationName);
platformApplicationRequest.setPlatform(platform.name());
CreatePlatformApplicationResult platformApplicationResult =
snsClient.createPlatformApplication(platformApplicationRequest);
• Google: GCMでは使用しない
• Apple: Certificate(pem)
• Kindle: Client ID
• Google: apisのキー
• Apple: ClientKey(pem)
• Kindle: Client Secret
![Page 39: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/39.jpg)
Java BatchアプリからPush
• 送信先デバイスのEndpointを生成
String applicationArn = platformApplicationResult.getPlatformApplicationArn();
CreatePlatformEndpointRequest platformEndpointRequest =
new CreatePlatformEndpointRequest();
platformEndpointRequest.setCustomUserData(customData);
platformEndpointRequest.setToken(platformToken);
platformEndpointRequest.setPlatformApplicationArn(applicationArn);
CreatePlatformEndpointResult platformEndpointResult =
snsClient.createPlatformEndpoint(platformEndpointRequest);
端末から取得した
デバイスのトークン
プラットフォーム情報
![Page 40: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/40.jpg)
Java BatchアプリからPush
• Endpointにメッセージを送信
PublishRequest publishRequest = new PublishRequest();
Map<String, String> messageMap = new HashMap<String, String>();
messageMap.put(platform.name(), getPlatformSampleMessage(platform));
publishRequest.setTargetArn(platformEndpointResult.getEndpointArn());
publishRequest.setMessageStructure("json");
message = jsonify(messageMap);
publishRequest.setMessage(message);
PublishResult publishResult = snsClient.publish(publishRequest);
messageをセットしてpublish
各プラットフォームを意識せず
統一のインターフェースでシンプルにpush可能
![Page 41: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/41.jpg)
Java BatchアプリからPush
![Page 42: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/42.jpg)
Event管理の設定
”Endpointの追加/削除/更新”および”送信失敗”という
Eventが発生した場合、設定を行うことで検知が可能になります
![Page 43: [AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知](https://reader031.fdocument.pub/reader031/viewer/2022012311/5566064fd8b42aa6628b4cdc/html5/thumbnails/43.jpg)
Amazon SNS
Mobile Push
まとめ:
• クロスプラットフォームプッシュ通知 (Apple, Google, Amazon)
• 1月100万リクエスト無料、以降は100万ごとに$1.00
• 堅牢性と信頼性とスケーラビリティを兼備
• 簡単なトークン管理
参考情報:
• SNSの詳細: http://amzn.to/179ee7r
• はじめ方およびサンプルアプリ: http://amzn.to/15rs1DV