AWS SNSPublishコンポーネントでWindowsプッシュ通知サービスを使用する

2014年6月にAmazon Simple Notification Service (SNS)がWindows Push Notification Service (WNS)をサポートすることが発表されましたが、使用されている方はいらっしゃいますでしょうか?このSNSとWNSはモバイルデバイスへのプッシュ通知を簡単に構築することができてとても便利なのですが、これらのサービスをどのように使用するのかという情報がWeb上にあまりないため、少し使ってみて挫折したという方もいらっしゃるかもしれません。
そこで本書では、ステップバイステップで両サービスの設定方法を解説しながらASTERIA Warpの「AWS SNSPublishコンポーネント」を用いてWindowsストアアプリへのトースト通知を行う手順を解説します。
※画面構成、メニュー名などは2014年11月現在のものです。
 
まずは開発者ガイドでメッセージをPublishするイメージを確認してください。
本書ではPublisherとして、Amazon SNSのダッシュボードとフローのコンポーネントからそれぞれPublishできることを確認します。
 
以下のように操作と確認をすすめていきます。
  • Amazon SNSでTopicを作成してメールによるSubscriptionを作成する
  • ダッシュボードから、登録したメールアドレスへメッセージをPublishしてみる
  • AWS SNSPublishコンポーネントから、登録したメールアドレスへメッセージをPublishしてみる
  • Windowsアプリを登録、作成してSNSのEndpointとなるURIを取得する
  • Amazon SNSでアプリを登録してEndpointを設定し、前で作成したTopicにEndpointを関連付ける
  • ダッシュボードから、登録したWindowsアプリへメッセージをPublishしてみる
  • AWS SNSPublishコンポーネントから、登録したWindowsアプリへメッセージをPublishしてみる
 

Amazon SNSでTopicを作成してメールによるSubscriptionを作成する

まず、SNSの基本としてSNSを使用したメール送信を行ってみます。
AWSマネジメントコンソールにサインインし、Amazon Web Servicesのサービス一覧から「SNS」を選択します。
 
20141117_003.png
 
SNS Dashboardが表示されますので、「Create New Topic」ボタンをクリックします。
 
20141117_005.png
 
以下のようなダイアログが表示されますので、Topic NameとDisplay Nameを入力し、「Create Topic」ボタンをクリックして新しいTopicを作成します。
今回は、Topic NameにbyWARPという名前を付けてみます。
 
20141117_007.png
 
Topicが作成されました。
次に作成したTopicで「Create Subscription」ボタンをクリックして、Subscriptionを作成します。
ここではEmailを指定して作成します。Endpointに受信するメールアドレスを入力して「Subscribe」ボタンをクリックします。

20141117_009.png

これで、SNSでメールを送信する準備ができました。
入力したメールアドレスに Subscriptionをconfirmするためのメールが届くので、メール本文内のリンクをクリックしてconfirmしておきます。
 

ダッシュボードから、登録したメールアドレスへメールをPublishしてみる

一回テストしてみましょう。
Dashboardで「Publish a message」ボタンをクリックします。「TargetARN」に作成したTopicのARNを入力します。
 
20141117_010.png

TargetARNは作成した「Topic Details」に「Topic ARN」として表示されいるarn:から始まる文字列を入力します。
 
20141117_012.png
 
Subjectに「SNS送信テスト」、Messageに「Publish Message from SNS」と入力して「Publish Message」ボタンをクリックすると、前に作成したSubscriptionで設定したメールアドレスに下記のようなメッセージが飛んできます。
Topicの作成時に「Display Name」を指定しなかったので、差出人が「AWS Notifications」となっています。
 
20141117_013.png
 
無事メールが送信されましたので、次項ではASTERIA Warpの「AWS SNSPublishコンポーネント」を使用してメールを送信してみます。
 

AWS SNSPublishコンポーネントから、登録したメールアドレスへメッセージをPublishしてみる

まず、次の4つの情報を準備します。
 
  • アクセスキー:AWSアカウントのアクセスキー。AWSコネクション作成時に使用します。
  • シークレットキー:AWSアカウントのシークレットアクセスキー。AWSコネクション作成時に使用します。
  • SNSのリージョン:AWSコネクション作成時に使用します。SNS Dashboardを表示していれば、画面右上に表示されています。今回はTokyoリージョンを選択しています。
20141117_014.png
 
  • トピックARN:AWS SNSPublishコンポーネントプロパティへ設定します。先ほど作成したTopicのARNです。
    例:arn:aws:sns:us-east・・・・・
それでは、フローデザイナーを起動します。
 
最初にコネクションペインで、新しい「AWS」コネクションを作成します。
用意したアクセスキーとシークレットキーを入力し、リージョンを選択します。
ここではAWS1という名前で作成しました。
 
20141117_015.png
 
以下のようなフローを作成します。
 
20141117_016.png
 
AWS SNSPublishコンポーネントの「コネクション名」プロパティで作成したAWSコネクション「AWS1」を選択し、「トピックARN」には事前に準備したトピックARNを入力します。「件名」プロパティへは「Message from WARP」と入力しました。
AWS SNSPublishコンポーネントの前のMapperコンポーネントでは「Message from AWS SNSPublish Component」という文字列をストリーム型「Text」で出力ストリームに設定しています。
 
それでは、フローを実行します。
すると、Subscriptionに設定したメールアドレスに下記のようなメールが送信されます。
 
20141117_017.png
 
無事届きました。
AWS SNSPublishコンポーネントでSNSへメッセージを発行することまで確認できました。
 
次項では、SNSからWNSへメッセージを送るためのWNSの設定を行っていきます。
 

Windowsアプリを登録、作成してSNSのEndpointとなるURIを取得する

※以下、Windowsストアアプリの開発者アカウントがある前提です。個人で登録すると1年間で2000円ぐらいかかります。
 
まず、WNSからのプッシュ通知を受け取るWindowsストアアプリを作成します。
 
Windowsデベロッパーセンターへサインインしてダッシュボードを開き、左のメニューから「アプリの提出」をクリックします。
 
20141117_018.png
 
アプリの提出画面が表示されたら「アプリの名前」をクリックして名前を予約します。
 
20141117_019.png
 
Windowsストアアプリの名前を入力して保存します。アプリの名前は、Windowsストア全体で一意になるようにする必要があります。
今回は「WARP-WNS-Test1」をアプリの名前として予約しました。
 
20141117_021.png
 
次に「サービス」をクリックします。
サービスの画面が表示されたら「Liveサービス サイト」をクリックします。
 
20141117_023.png
 
すると、以下の情報が表示されますのでメモしておきます。これらの情報は後で使用します。
  • パッケージSID
  • アプリケーションID
  • クライアントID
  • クライアントシークレット

それでは、Visual Studio 2013を起動してアプリを作成します。
新プロジェクトからVisual C#でWindows Phone AppsのBlank App(Windows Phone)を選択します。当然Blank Appでなくてもよいですし、好きなものを選択してください。
 
20141117_025.png
 
今回は「WARPWNS1」という名前で作成しました。
 
次に、「WARPWNS1」をデベロッパーセンターで予約したアプリに関連付けます。
Visual StudioのSolution Explorerでプロジェクトを右クリックしてメニューを開き、Store→Associate App With the Store...をクリックします。
 
20141117_027.png

以下の画面で「Next」をクリックしてストアへのサインイン画面を表示します。
 
20141117_028.png

開発者登録しているアカウントでサインインします。

20141117_030.png
 
以下の画面でメールアドレスを入力して「Next」をクリックすると、メールアドレス宛にセキュリティーコードが送られてきます。
 
20141117_032.png
 
送られてきたセキュリティーコードを入力して、「Submit」をクリックします。
 
20141117_034.png
 
すると、先程予約したストアアプリの名前が表示されていますので、選択して「Next」をクリックします。
今回は「WARP-WNS-Test1」を選択します。
 
20141117_036.png
 
これで無事関連付けができました。

20141117_038.png
 
それではアプリのソースの方を少し追加します。
App.xaml.csを開いて(プロジェクトを作成したらこのファイルが開かれていると思います)、Appクラスの一番下にinitNotificationという関数を追加します。
 
20141117_040.png
 
PushNotificationChannelManagerからPushNotificationChannelを取得して、さらにURIを取得しダイアログに表示します。このURIは後ほどAWS SNSの設定で使用します。
このinitNotificationをAppのOnLaunchedの最後に追加します。
 
20141117_042.png
 
ソースの上の方にもどってusingを追加してください。
 
20141117_043.png
 
ソースの追加は以上です。
 
次にPackage.appxmanifestを開きます。
 
20141117_044.png
 
Application/Toast capableにYesを設定してトースト通知を有効にします。
 
保存してEmulatorで実行します。
 
20141117_045.png
 
無事動きますと、Emulator上でアプリケーションが起動し、URIがダイアログに表示されます。
URIをダイアログで表示しましたが、長すぎますのでVisual Studioのデバッガーを使ってMessageDialogをnewしている行あたりで、uriに格納されている文字列をコピーしてください。
これでWindowsアプリの作成は終わりですが、Emulatorは起動したままにしておきます。
 
20141117_046.png
 
 

Amazon SNSでアプリを登録してEndpointを設定し、前で作成したTopicにEndpointを関連付ける

AWSのSNSの設定に戻ります。
SNSのDashboardを開いて、Applicationを追加します。「Add a New App」ボタンをクリックします。
 
20141117_047.png
 
以下の項目にそれぞれ値を入力して「Add New App」ボタンをクリックします。
  • Application Name:アプリの名前を入力します。
  • Push Platform:上記のように「Microsoft WNS for Windows 8+ & Windows Phone 8.1+」を選択します。
  • Client Secret:Windowsデベロッパーセンターで表示しメモしておいたクライアントシークレットを入力します。
  • Package Security Identifier (SID) :Windowsデベロッパーセンターで表示しメモしておいたパッケージSIDを入力します。
20141117_049.png
 
今回はApplication Nameを「WARPWNS1」という名前で追加しました。
 
作成したApplicationにEndpointを追加します。「Add Endpoints」ボタンをクリックします。
 
20141117_050.png
 

以下の画面ではDevice Tokenという入力欄がありますがDevice Tokenって何でしょうか? 実はここには、Visual Studio 2013 でWindows ストアアプリをデバッグで動かしたときに取得したURIを入力します。

20141117_052.png
 
User Dataは空のままで「Add Endpoints」をクリックします。
 
20141117_051.png
 
無事Endpointが追加できました。
 
次に、SNSに作成したTopicへEndpointを紐づけます。
 
先ほど作成したEndpointのチェックボックスにチェックを入れて「Endpoint Actions」のドロップダウンリストから、「Subscribe Endpoints to Topic」を選択します。
 
20141117_054.png

以下の画面で「Select a topic from the list of your topics」のドロップダウンリストからTopicを選択します。
今回は最初に作成したTopicの「byWARP」を選択します。
TopicARNには自動的にARNが設定されますので、「Subscribe」ボタンをクリックします。
 
20141117_055.png

無事WindowsストアアプリのSubscriptionも追加できました。
 
20141117_056.png
次項では、実際にSNSからメッセージをPublishしてみます。

ダッシュボードから、登録したWindowsアプリへメッセージをPublishしてみる

それでは、SNSからWNSを経由してWindowsストアアプリへメッセージを送ってみます。
 
SNSDashboardでTopicを選択します。
今回は「byWARP」です。
Topicの画面上にある「Publish」ボタンをクリックします。
 
20141117_057.png
 
Subjectに「SNS-WNS」、Messageに「Publish Message from SNS Dashboard」と入力して、「Publish Message」ボタンをクリックします。

20141117_058.png
 
無事Visual Studio 2013 で使用しているEmulatorにトースト通知が行われました。
 
20141117_059.png
 
そして最初に登録したメールアドレスにもメールが送信されています。
 
20141117_060.png
 
Emulatorではメッセージが切れてしまいました。
下記は実機でテストしたときの画像です。
 
20141117_061.png
 

AWS SNSPublishコンポーネントから、登録したWindowsアプリへメッセージをPublishしてみる

最後に、ASTERIA WarpからAWS SNSPublishコンポーネントを使用して、SNS、WNSを経由してWindowsストアアプリへメッセージを送ってみます。
 
はじめに作成した、以下のフローをフローデザイナーから実行します。
 
20141117_016.png
 
20141117_062.png
 
Emulatorにトースト通知が行われましたが、こちらもメッセージが切れてしまいました。
実機でテストしたときの画像が以下になります。
「Message from AWS SNSPublish Component」というメッセージが確認できました。
 
20141117_063.png
 

まとめ

このようにASTERIA WarpでSNSを使った通知のフローを作成すれば、フローは何も変更せずにWNSを使ってWindowsストアアプリへメッセージを送るようにできることが分かりました。今回はWindowsストアアプリへの通知でしたが、iOSのアプリやAndroidのアプリにも簡単に通知を送信することができます。ASTERIA WarpとAWS SNSを使用すれば、AWS SNSに設定を追加するだけで各種の方法で各種のデバイスへ簡単に通知を送ることができるようになります。
 

参考資料

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

他のキーワードで検索する