[awsマイスターシリーズ]amazon snsモバイルプッシュ通知

Post on 28-May-2015

16.697 Views

Category:

Documents

9 Downloads

Preview:

Click to see full reader

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

top related