【マルチデバイス対応したプッシュ通知インフラ】 Windows Azure 通知ハブのご紹介(その3)

【マルチデバイス対応したプッシュ通知インフラ】 Windows Azure 通知ハブのご紹介(その1)
【マルチデバイス対応したプッシュ通知インフラ】 Windows Azure 通知ハブのご紹介(その2)

Wikipedia に名前が載っている某有名エバンジェリストから「マニアックな機能紹介してんな~」と・・・嘲笑されましたが、それにもめげず(その3)をご紹介します。

さて、今回は Windows 通知ハブで出来ることをもう少し深堀してまとめます。ご紹介するのは以下3つ。

・タグベースのマルチキャスト

・ネイティブプッシュ通知

・テンプレートを使ったマルチプラットフォームプッシュ通知

 

 

タグベースのマルチキャスト

その1で解説した通り、Windows Azure 通知ハブはタグベースのマルチキャストに対応しており、ユーザーの属性によって通知内容を変更することが出来ます。タグには、アプリ特有の文字列(例:ユーザID、お気に入りのスポーツチーム、位置情報など)を含む事が出来ます。例えば、ユーザーの位置情報から、最適なお天気情報を通知できます。

当然ながら、実際にマルチキャストを行うための準備段階としてクライアントが属性情報(タグ)をWindows Azure 通知ハブに登録する必要があります。

下図は別々のクライアントが”Address:島根県”、”Address:東京都”という属性を登録しています。

image

 

例えば Windows 8場合、この操作を行うため、Notification Hub クラスにタグを複数指定可能なAPI が提供されています。

hub7

 

登録情報を基にAzure通知ハブはユーザー属性に応じたフィルタリング可能なプッシュ通知を実現できます。

下図はAddressが”島根県”のクライアントに対してのみ通知(”くもり”)を送っています。

image

これを簡単に実装するため、イベントソース側のNotificationHubClientクラスにタグを指定可能なAPIが提供されています。今回の例では Tag に”島根県”を指定しました。

hub8

 

 

ネイティブプッシュ通知

その名の通り、プラットフォームネイティブの通知を送るための機能です。

下図ではインベントソースが生成したメッセージ(”速報”)をiPhoneに通知しています。

image

 

イベントソース側の実装で使う NotificationHubClient クラスには下記のメソッドが提供されています

タグベースのマルチキャストにも対応しているため、引数に Tag を指定することも出来ます。

SendAppleNativeNotification

SendWindowsNativeNotification

hub_native

 

 

テンプレートを使ったマルチプラットフォームプッシュ通知

ネイティブプッシュ通知と比べて、テンプレートを使った方法では、マルチデバイス対応した柔軟なメッセージを通知可能です。ただしネイティブプッシュ通知と比べるとクライアント側の実装が少々増えます。まず、準備段階として、クライアント側でテンプレートを作って Azure 通地ハブに送る必要があります。このテンプレートは各プラットフォーム毎に異なります。

例えば下図は Windows 8用の「Windows Store ToastText01 templateApple」、iOS用の「JSON template」を使ったサンプルです。ちなみに、$(message)はイベントソースがメッセージを指定するためにプレースホルダです。

image

 

(上で説明したものと同じですが・・・・)例えば Windows 8の場合、この操作を行うため、Notification Hub クラスに下図の API が提供されていて、xmlTemplateを指定出来るのが分かります。また、タグベースのマルチキャストにも対応しているので、引数に Tag を指定することも可能です。

hub7

 

一方、イベントソース側は一度の送信処理でマルチプラットフォーム対応のプッシュ通知を送ることができます。これは便利。

例えば下図は$(message)に”通知”という文字列を指定して、iPhone、Windows 8にプッシュ通知を送っています。

image

 

(上で説明したものと同じですが・・・・)この実装を容易にするため、イベントソース側のNotificationHubClientクラスに下図の API が提供されていて、 複数の文字列(例えば”速報”)を指定可能です。

hub8

 

 

今回はどのような機能を持っているのか、、、という観点でご紹介しました。GAまでには、さらに機能強化されると思います。「マニアックな機能紹介してんな~」と嘲笑しないで使ってみてくださいね。