Notification Hubs を更新: 独立した NuGet、Installation モデル、メッセージごとのテレメトリなど

このポストは、11 月 10 日に投稿された Updates from Notification Hubs: Independent NuGet, Installation model, PMT, and more の翻訳です。

マイクロソフトは皆様に開発作業をスムーズに進めていただくために、できるだけ便利な機能を提供できるよう努めています。ここでは、この数か月の間に行った取り組みの成果をご紹介したいと思います。

  • Notification Hubs が Azure Service Bus から切り離され、正式に独立したサービスとなりました。このため独立した NuGet パッケージが提供されています。

  • デバイスと通知の処理を行う新しいプッシュ モデルとして、Installation モデルを導入しました。各種プラットフォーム通知システムに対応するこのモデルは、重複する登録や古くなった登録を排除できるように強化されています。

  • メッセージごとのテレメトリにより、Notification Hubs へのリクエストの結果を詳細に確認できるようになりました。

  • マルチテナントに対する操作が以前よりも簡単になり、資格情報を名前空間レベルで操作できるようになりました。

  • プッシュ変数により、ブロードキャスト通知を個々にカスタマイズして送信する処理が簡単になりました。

  • 直接送信により、Notification Hubs にデバイスを登録せずにプッシュすることが可能になりました。

Notification Hubs の独立した Nuget

Notification Hubs が正式に Service Bus から切り離されました。このため、Notification Hubs ゲートウェイと通信し、「Notification Hub」タイプの名前空間を操作する独立した NuGet パッケージ (英語) が提供されています。SDK リファレンス (英語) もご参照ください。

この独立した NuGet パッケージも今後の Azure SDK リリースに含まれる予定です。

Mixed タイプの名前空間は忘れずに切り替えてください!

Mixed タイプの通知の更新 (英語) はほぼ終了しています。Notification Hubs と Service Bus の両方の機能を活用する Mixed タイプの名前空間を使用している方は、今後のユーザー エクスペリエンスに影響が出るため、切り替えを完了させてください。「Mixed」タイプの名前空間を探して、Queues、Topics、Relays、Event Hubs を新しい「Messaging」タイプの名前空間に移行する必要があります。Notification Hubs のみを含む「Mixed」タイプの名前空間は、自動的に「Notification Hub」タイプに変換されます。

今後の新しいリリースやバグ修正を引き続き利用するためには、Notification Hubs 機能を活用する名前空間をそれ専用のタイプに変換することが不可欠となります。

新しい Installation モデル

[REST (英語)NuGet (英語)Node.js (英語)Java]

Installation モデルは、Notification Hubs を使用してデバイスと通知を管理する新しい方法です。Installation は JSON のバッグのようなものであり、デバイス上の特定の Installation に必要なすべてのプロパティ (プッシュ チャネル、タグ、テンプレートなど) を格納します。このモデルは、Notification Hubs の操作をより直観的かつ簡単にするために作られました。Installation をお勧めする理由は次のとおりです。

  • 主なプラットフォーム通知システム (APNs、GCM、WNS など) で使用されているデバイス ベースのモデルに対応している

  • プッシュ関連の情報を編成して統合でき、デバイスごとに登録の一覧を管理する複雑さが軽減される

  • 通知の重複を防止する強力な機能を備えている

  • 単一のデバイスをターゲットにできるという高度な機能を備え、個々の Installation ID に送信を行うことができる

  • 修正プログラムを適用できる
  • Installation ID はユーザー固有であるため、デバイスまたはユーザーの GUID を Installation に関連付けることができる

Installation の典型的なワークフローは次のようになります。

  • Installation オブジェクトをクライアントに作成する

  • Installation オブジェクトを Notification Hubs に登録する

  • 成功時は、その後のアクセスのために Installation ID をデバイスに保管する
  • 通知を送信する (簡単に開始できるように、プッシュ インターフェイスは以前の Registration モデル用のものと同一になっています)

多くの方は既に SDK (.NET (英語)Node.js (英語)Java) を使用したことがあるかと思いますが、REST のドキュメントを以下に掲載しておきます。

メッセージごとのテレメトリ

[REST (英語)]

より的確な監視と診断を行っていただけるように、メッセージごとにテレメトリを記録する機能を導入しました。これにより、送信リクエストの Notification ID を指定して、そのリクエストのステータスとプッシュ結果を取得できるようになります。リクエストが処理された時刻と次のようなプラットフォーム固有の結果などが記録されます。

  • 成功した送信の数
  • 無効な資格情報の数
  • PNS 不到達の数
  • 不良チャネルの数
  • PNS サーバー エラーの数
  • チャネル スロットルの対象となった数
  • スキップされた数 (重複している登録)

各プラットフォームで記録される結果の詳細については、こちらのドキュメント (英語) を参照してください。こうした情報を得られることは、通知関連の開発作業を改善するのに大いに役立つと期待しています。

マルチテナント

[REST (機械翻訳)]

マルチテナントに対する操作がこれまでより簡単になり、プッシュ システムの資格情報を名前空間レベルで操作できるようになりました。名前空間プッシュ通信サービス (PNS) API (機械翻訳) は、複数のハブにわたる大規模なアプリケーションを想定して作られています。この API を使用すれば、同じ名前空間にある複数のハブに対して、統一された PNS 設定を一括で読み取ったり、簡単に更新したりすることができます。プッシュの資格情報と証明書を名前空間レベルで設定すると、その名前空間内のすべてのハブにそれらが自動で適用されます。

プッシュ変数

[REST (現在は Registration モデルで利用可能)]

新しいプッシュ変数はとても便利で、ネイティブとテンプレートの両方で各デバイス登録にキー/値ペアの文字列を最大 60 個関連付けることができます。送信時に登録されているキーをプレースホルダーとして使用すると、実行時に Notification Hubs によってそのキーが対応する値に置き換えられます。これは、次のような点でとても便利です。

  • プッシュ変数機能では JSON キー/値ペア ディクショナリを使用するため、利用やカスタマイズが簡単です。
  • 開発者はユーザーやデバイスの情報を登録ごとに保管しておき、それを任意のメッセージで使用することができます。テンプレート プッシュ通知のフォーマット上の制限を回避できるため、メッセージのバリエーションを増やせます。
  • 特定の登録でペアとなっている値が存在しない場合に備えて、既定値を指定できます。

この機能は既存の登録の設計の拡張機能として、API バージョン 2015-04 以降で利用できます。

 <{Platform}RegistrationDescription xmlns:i="https://www.w3.org/2001/XMLSchema-instance" 
xmlns="https://schemas.microsoft.com/netservices/2010/10/servicebus/connect">
    <Tags>myTag, myOtherTag</Tags>
    <ChannelUri>{ChannelUri}</ChannelUri>
    ...
    <PushVariables>{"key1":"value1","key2":"value2"}</PushVariables>
</{Platform}RegistrationDescription>

プッシュ変数のパラメーターは基本的にはディクショナリです。

 PushVariables = new Dictionary<string, string> {{"deviceUser", "Jane"}, deviceLocation", "London"}}

テンプレートとの互換性を確保し、テンプレートによって受け入れられるすべての式をサポートするという考えに基づき、プッシュ変数は既定値もサポートします。プッシュ変数またはテンプレート、あるいはこの両方を使用して送信を行う場合、特定の登録またはテンプレートに関連付けられた登録でキーが見つからないときに使用する既定値を、$(key:{defaultValue}) として指定できます。たとえば、「Good morning, $(firstName:{friend})」とすると、firstName キーが指定されていない登録には「Good morning, friend」がプッシュされます。

直接送信

[REST (英語)NuGet (英語)]

直接送信の機能 (英語) では、通知を PNS ハンドルに直接送信することができます。この機能は、独自のデバイスを管理している場合や、Notification Hubs を使用して未登録のデバイスに送信を行う場合にとても便利です。

次のステップ

Mixed タイプの名前空間を使用している方は、先ほどもお伝えしたとおり、Mixed タイプの名前空間を切り替えてください。ここでご紹介した新機能をぜひご活用いただき、フィードバックやご質問、ご意見を下のコメント欄または nhtalk@microsoft.com までお寄せいただければ幸いです。