• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
[AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知
 

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

on

  • 12,417 views

 

Statistics

Views

Total Views
12,417
Views on SlideShare
12,216
Embed Views
201

Actions

Likes
34
Downloads
91
Comments
1

6 Embeds 201

https://twitter.com 182
https://www.chatwork.com 8
https://cybozulive.com 6
http://openlink.to 3
http://tweetedtimes.com 1
https://kcw.kddi.ne.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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 Fire Devices
    • Apple Kindle Fire Kindle Fire Google Publish Apple Kindle Fire Kindle Fire Google Publish SNSならプラットフォーム特有のメッセージペイロードを送ることも可 一度のPublish指示であらゆる端末へ プラットフォームそれぞれに異なる ペイロードを送信
    • デバイスごとに異なるメッセージを送ることも、グループに一斉 通知をすることも可 Publish Publish Publish Publish デバイスごとの直接通知 パートナー様を通じた場合等のシナリオ 1SNSトピックの 最大サイズは10,000 (2013年8月現在)
    • メッセージサイズの上限はプラットフォームごと • 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
    • SNSは各フラットフォームからのフィードバックを基にトークンの 入れ替えや無効化を自動実行 Amazon SNS Mobile Push トークンの登録 トークン フィードバック クラウド上 のアプリ ケーション • デバイスごとに安定 したエンドポイントを 提供 • トークンフィードバッ クは参照可能 (必ずしも参照しなくても 利用可)
    • SNSのスケーラビリティならアプリが必要とする分だけの通知をいつ でも送信可能 • 数通のメッセージから億単位のメッセージまで • 数個のデバイスから億単位のデバイスまで ...これらを設定管理の手間なしで ...堅牢性や信頼性を犠牲にすることなく
    • 広範な言語とプラットフォームをカバーするSDKとIDE お好みの言語やプラットフォームのSDKを選択 …そしてお好みのIDEに統合 Eclipse Visual Studio CLI Powershell Android iOS Java nodeJS .NET PHP Python Ruby
    • SNSモバイルプッシュ通知はコンソールからでも利用可 • 簡単な手順でクロスプラット フォームな通知を実装可 • トークンをバッチ入力するこ とで既存のデバイスの一斉 登録も可
    • 料金・無料使用枠 1月あたり100万リクエスト • 100万のPublish(アプリSNS) • 100万のモバイルプッシュ通知(SNS各プラットフォーム) 以降は100万リクエスト当たり $1.00 • $0.50 で 100万publish (アプリSNS) • $0.50 で 100万モバイルプッシュ通知(SNS各プラットフォーム) Note: - SNSトピック経由で送る方が全体の費用は削減できる - 各プラットフォームへの支払いは特に無し
    • 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 = GoogleCloudMessaging.getInstance(this); token = gcm.register(getString(R.string.project_number));
    • 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オブジェク トを生成 ↓ • Google apiのキー, Device Token, 送信メッセージを定義 ↓ • 各プラットフォーム(Android, Apple, Kindle)用オブジェクトを生成 ↓ • 送信先デバイスのEndpointを生成 ↓ • Endpointにメッセージを送信
    • 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
    • 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); 端末から取得した デバイスのトークン プラットフォーム情報
    • 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可能
    • Java BatchアプリからPush
    • Event管理の設定 ”Endpointの追加/削除/更新”および”送信失敗”という Eventが発生した場合、設定を行うことで検知が可能になります
    • Amazon SNS Mobile Push まとめ: • クロスプラットフォームプッシュ通知 (Apple, Google, Amazon) • 1月100万リクエスト無料、以降は100万ごとに$1.00 • 堅牢性と信頼性とスケーラビリティを兼備 • 簡単なトークン管理 参考情報: • SNSの詳細: http://amzn.to/179ee7r • はじめ方およびサンプルアプリ: http://amzn.to/15rs1DV