AWSマイスターシリーズ番外編
Amazon SNS モバイルプッシュ通知
2013.09.17
アマゾン データ サービス ジャパン株式会社
ソリューション アーキテクト
安川 健太 篠原 英治
今日のAgenda
モバイルプッシュ通知について
Amazon SNSモバイルプッシュ通知機能
• 機能概要
• SDK, IDE
• 料金・無料使用枠
Amazon SNSでモバイルプッシュ通知を使うまで
Q&A
モバイルプッシュならアプリが起動していなくても通知が
可能
• ユーザは通知を受け取るか否か
設定可能
• 特定のデバイス上の特定のアプリ
にのみ通知する事も
• 送るのは短いメッセージ: 読んで
無視するも、アプリを起動するも
クラウドから特定のデバイス上の特定のアプリに通知可
クラウド上の
プログラム
モバイル・アプリ
通知は各プラットフォーム独自の仕組みで送信
クラウド上の
プログラム
モバイルアプリ
モバイル
プラットフォーム
(e.g. Apple,
Google, Amazon)
開発者側でデバイスごとのトークンおよびユーザの受信設定を管理
プラットフォーム
トークンの登録
ト ー ク ン へ の
フィードバック
通常プラットフォームごとに通知の方法は異なる
Apple APNS
Google GCM
Amazon ADM
• 異なるAPI
• 異なる機能
• 異なるフィードバック機構
一般に数百万のデバイスへの通知の管理運用は大きな問題に
クラウド上の
プログラム
プラットフォーム モバイルアプリ
そのため、プラットフォームごとのAPIを抽象化した中間プロバイダを
利用するのが一般的
モバイルアプリ中間プロバイダ
開発者側でプラットフォームを抽象化するサービスを利用することで
得られるもの、得られないもの
 どのプラットフォーム上の
アプリのユーザでも抽象化
出来る
 信頼性のある通知のため
のトークンは管理可能
 運用の複雑さの回避
 スケーラ...
Amazon SNS Mobile Pushはプラットフォーム横断型プッシュ通知
のための中間マネージドサービス
Amazon SNS
Mobile Push
Apple Devices
Google Devices
Amazon Kindle...
Apple
Kindle
Fire
Kindle
Fire
Google
Publish
Apple
Kindle
Fire
Kindle
Fire
Google
Publish
SNSならプラットフォーム特有のメッセージペイロードを送ることも...
デバイスごとに異なるメッセージを送ることも、グループに一斉
通知をすることも可
Publish
Publish
Publish
Publish
デバイスごとの直接通知 パートナー様を通じた場合等のシナリオ
1SNSトピックの
最大サイズは10,...
メッセージサイズの上限はプラットフォームごと
• Apple Push Notification Service
• 256 bytes
• https://developer.apple.com/library/ios/documentati...
SNSは各フラットフォームからのフィードバックを基にトークンの
入れ替えや無効化を自動実行
Amazon SNS
Mobile Push
トークンの登録
トークン
フィードバック
クラウド上
のアプリ
ケーション
• デバイスごとに安定
したエ...
SNSのスケーラビリティならアプリが必要とする分だけの通知をいつ
でも送信可能
• 数通のメッセージから億単位のメッセージまで
• 数個のデバイスから億単位のデバイスまで
...これらを設定管理の手間なしで
...堅牢性や信頼性を犠牲にすること...
広範な言語とプラットフォームをカバーするSDKとIDE
お好みの言語やプラットフォームのSDKを選択
…そしてお好みのIDEに統合
Eclipse Visual Studio CLI Powershell
Android iOS Java no...
SNSモバイルプッシュ通知はコンソールからでも利用可
• 簡単な手順でクロスプラット
フォームな通知を実装可
• トークンをバッチ入力するこ
とで既存のデバイスの一斉
登録も可
料金・無料使用枠
1月あたり100万リクエスト
• 100万のPublish(アプリSNS)
• 100万のモバイルプッシュ通知(SNS各プラットフォーム)
以降は100万リクエスト当たり $1.00
• $0.50 で 100万publi...
Amazon SNS
Mobile Push
ここまでのまとめ:
• クロスプラットフォームプッシュ通知
(Apple, Google, Amazon)
• 1月100万リクエスト無料、以降は100万
ごとに$1.00
• 堅牢性と信頼性とスケ...
今日のAgenda
• モバイルプッシュ通知について
• Amazon SNSモバイルプッシュ通知機能
– 機能概要
– SDK, IDE
– 料金・無料使用枠
• Amazon SNSでモバイルプッシュ通知を使うまで
• Q&A
https://s3.amazonaws.com/codesamples/sns/latest/snsmobilepush.zip
サンプルアプリケーション
Androidアプリ
PushリクエストBatch
AndroidアプリをEclipseでBuild
必要なライブラリ
• Android SDK
• Google Play Services
Google apis設定およびKeyの取得
https://code.google.com/apis/console/
Androidアプリを起動
USB接続した実機で実行
インストールされたAndroidアプリ
インストールされたAndroidアプリ
Management ConsoleからPush
Management ConsoleからPush
Management ConsoleからPush
Device Tokenを端末から取得
import com.google.android.gms.gcm.GoogleCloudMessaging;
private GoogleCloudMessaging gcm;
gcm = Google...
Management ConsoleからPush
CSVによるバルク登録機能も。ただし上限は2MBまで。
Management ConsoleからPush
Push from Management Console
Management ConsoleからPush
Java BatchアプリからPush
Java BatchアプリからPush
『AWS SDK提供のSNSライブラリでメッセージをPush』
• AWSのCredential(AccessKeyID と SecretAccessKey)でAmazon SNS用のClientオブジェ...
Java BatchアプリからPush
• 各プラットフォーム(Android, Apple, Kindle)用オブジェクトを生成
CreatePlatformApplicationRequest platformApplicationRequ...
Java BatchアプリからPush
• 送信先デバイスのEndpointを生成
String applicationArn = platformApplicationResult.getPlatformApplicationArn();
C...
Java BatchアプリからPush
• Endpointにメッセージを送信
PublishRequest publishRequest = new PublishRequest();
Map<String, String> messageM...
Java BatchアプリからPush
Event管理の設定
”Endpointの追加/削除/更新”および”送信失敗”という
Eventが発生した場合、設定を行うことで検知が可能になります
Amazon SNS
Mobile Push
まとめ:
• クロスプラットフォームプッシュ通知 (Apple, Google, Amazon)
• 1月100万リクエスト無料、以降は100万ごとに$1.00
• 堅牢性と信頼性とスケーラビリティ...
Upcoming SlideShare
Loading in...5
×

[AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知

17,836

Published on

1 Comment
62 Likes
Statistics
Notes
No Downloads
Views
Total Views
17,836
On Slideshare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
130
Comments
1
Likes
62
Embeds 0
No embeds

No notes for slide

[AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知

  1. 1. AWSマイスターシリーズ番外編 Amazon SNS モバイルプッシュ通知 2013.09.17 アマゾン データ サービス ジャパン株式会社 ソリューション アーキテクト 安川 健太 篠原 英治
  2. 2. 今日のAgenda モバイルプッシュ通知について Amazon SNSモバイルプッシュ通知機能 • 機能概要 • SDK, IDE • 料金・無料使用枠 Amazon SNSでモバイルプッシュ通知を使うまで Q&A
  3. 3. モバイルプッシュならアプリが起動していなくても通知が 可能 • ユーザは通知を受け取るか否か 設定可能 • 特定のデバイス上の特定のアプリ にのみ通知する事も • 送るのは短いメッセージ: 読んで 無視するも、アプリを起動するも
  4. 4. クラウドから特定のデバイス上の特定のアプリに通知可 クラウド上の プログラム モバイル・アプリ
  5. 5. 通知は各プラットフォーム独自の仕組みで送信 クラウド上の プログラム モバイルアプリ モバイル プラットフォーム (e.g. Apple, Google, Amazon)
  6. 6. 開発者側でデバイスごとのトークンおよびユーザの受信設定を管理 プラットフォーム トークンの登録 ト ー ク ン へ の フィードバック
  7. 7. 通常プラットフォームごとに通知の方法は異なる Apple APNS Google GCM Amazon ADM • 異なるAPI • 異なる機能 • 異なるフィードバック機構
  8. 8. 一般に数百万のデバイスへの通知の管理運用は大きな問題に クラウド上の プログラム プラットフォーム モバイルアプリ
  9. 9. そのため、プラットフォームごとのAPIを抽象化した中間プロバイダを 利用するのが一般的 モバイルアプリ中間プロバイダ
  10. 10. 開発者側でプラットフォームを抽象化するサービスを利用することで 得られるもの、得られないもの  どのプラットフォーム上の アプリのユーザでも抽象化 出来る  信頼性のある通知のため のトークンは管理可能  運用の複雑さの回避  スケーラビリティの確保の  コスト – プラットフォーム 側が無料だとしても
  11. 11. Amazon SNS Mobile Pushはプラットフォーム横断型プッシュ通知 のための中間マネージドサービス Amazon SNS Mobile Push Apple Devices Google Devices Amazon Kindle Fire Devices
  12. 12. Apple Kindle Fire Kindle Fire Google Publish Apple Kindle Fire Kindle Fire Google Publish SNSならプラットフォーム特有のメッセージペイロードを送ることも可 一度のPublish指示であらゆる端末へ プラットフォームそれぞれに異なる ペイロードを送信
  13. 13. デバイスごとに異なるメッセージを送ることも、グループに一斉 通知をすることも可 Publish Publish Publish Publish デバイスごとの直接通知 パートナー様を通じた場合等のシナリオ 1SNSトピックの 最大サイズは10,000 (2013年8月現在)
  14. 14. メッセージサイズの上限はプラットフォームごと • 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
  15. 15. SNSは各フラットフォームからのフィードバックを基にトークンの 入れ替えや無効化を自動実行 Amazon SNS Mobile Push トークンの登録 トークン フィードバック クラウド上 のアプリ ケーション • デバイスごとに安定 したエンドポイントを 提供 • トークンフィードバッ クは参照可能 (必ずしも参照しなくても 利用可)
  16. 16. SNSのスケーラビリティならアプリが必要とする分だけの通知をいつ でも送信可能 • 数通のメッセージから億単位のメッセージまで • 数個のデバイスから億単位のデバイスまで ...これらを設定管理の手間なしで ...堅牢性や信頼性を犠牲にすることなく
  17. 17. 広範な言語とプラットフォームをカバーするSDKとIDE お好みの言語やプラットフォームのSDKを選択 …そしてお好みのIDEに統合 Eclipse Visual Studio CLI Powershell Android iOS Java nodeJS .NET PHP Python Ruby
  18. 18. SNSモバイルプッシュ通知はコンソールからでも利用可 • 簡単な手順でクロスプラット フォームな通知を実装可 • トークンをバッチ入力するこ とで既存のデバイスの一斉 登録も可
  19. 19. 料金・無料使用枠 1月あたり100万リクエスト • 100万のPublish(アプリSNS) • 100万のモバイルプッシュ通知(SNS各プラットフォーム) 以降は100万リクエスト当たり $1.00 • $0.50 で 100万publish (アプリSNS) • $0.50 で 100万モバイルプッシュ通知(SNS各プラットフォーム) Note: - SNSトピック経由で送る方が全体の費用は削減できる - 各プラットフォームへの支払いは特に無し
  20. 20. Amazon SNS Mobile Push ここまでのまとめ: • クロスプラットフォームプッシュ通知 (Apple, Google, Amazon) • 1月100万リクエスト無料、以降は100万 ごとに$1.00 • 堅牢性と信頼性とスケーラビリティを兼備 • 簡単なトークン管理
  21. 21. 今日のAgenda • モバイルプッシュ通知について • Amazon SNSモバイルプッシュ通知機能 – 機能概要 – SDK, IDE – 料金・無料使用枠 • Amazon SNSでモバイルプッシュ通知を使うまで • Q&A
  22. 22. https://s3.amazonaws.com/codesamples/sns/latest/snsmobilepush.zip サンプルアプリケーション Androidアプリ PushリクエストBatch
  23. 23. AndroidアプリをEclipseでBuild 必要なライブラリ • Android SDK • Google Play Services
  24. 24. Google apis設定およびKeyの取得 https://code.google.com/apis/console/
  25. 25. Androidアプリを起動
  26. 26. USB接続した実機で実行
  27. 27. インストールされたAndroidアプリ
  28. 28. インストールされたAndroidアプリ
  29. 29. Management ConsoleからPush
  30. 30. Management ConsoleからPush
  31. 31. Management ConsoleからPush
  32. 32. Device Tokenを端末から取得 import com.google.android.gms.gcm.GoogleCloudMessaging; private GoogleCloudMessaging gcm; gcm = GoogleCloudMessaging.getInstance(this); token = gcm.register(getString(R.string.project_number));
  33. 33. Management ConsoleからPush CSVによるバルク登録機能も。ただし上限は2MBまで。
  34. 34. Management ConsoleからPush Push from Management Console
  35. 35. Management ConsoleからPush
  36. 36. Java BatchアプリからPush
  37. 37. Java BatchアプリからPush 『AWS SDK提供のSNSライブラリでメッセージをPush』 • AWSのCredential(AccessKeyID と SecretAccessKey)でAmazon SNS用のClientオブジェク トを生成 ↓ • Google apiのキー, Device Token, 送信メッセージを定義 ↓ • 各プラットフォーム(Android, Apple, Kindle)用オブジェクトを生成 ↓ • 送信先デバイスのEndpointを生成 ↓ • Endpointにメッセージを送信
  38. 38. 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
  39. 39. 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); 端末から取得した デバイスのトークン プラットフォーム情報
  40. 40. 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可能
  41. 41. Java BatchアプリからPush
  42. 42. Event管理の設定 ”Endpointの追加/削除/更新”および”送信失敗”という Eventが発生した場合、設定を行うことで検知が可能になります
  43. 43. Amazon SNS Mobile Push まとめ: • クロスプラットフォームプッシュ通知 (Apple, Google, Amazon) • 1月100万リクエスト無料、以降は100万ごとに$1.00 • 堅牢性と信頼性とスケーラビリティを兼備 • 簡単なトークン管理 参考情報: • SNSの詳細: http://amzn.to/179ee7r • はじめ方およびサンプルアプリ: http://amzn.to/15rs1DV
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×