1

プッシュ通知に Azure Notification Hub を使用しようとしています。MSDN の記事によると、登録管理には 2 つの方法があります。チュートリアルでは、最初のアプローチであるクライアント アプリケーションでの登録管理について説明しています。ただし、私のニーズには、2 番目のアプローチ (アプリ バックエンドでの登録管理) の方が適しているようです。

ドキュメントやその方法の例が見つかりません。具体的には、iOS モバイル アプリケーションとの統合に興味があります。
私が理解している限り、登録フローは次のようになります。

  1. ネイティブ アプリケーションは、開始時にデバイス ID とアプリケーション名を渡す HTTP 要求をバックエンドに送信します。
  2. バックエンドは通知ハブにデバイスを登録することを想定しています (テンプレート通知に CreateAppleTemplateRegistration を使用していると思います)
  3. 登録が期限切れになるとすぐに、バックエンドは登録を更新する責任があります

それが正しいか?バックエンド登録管理の例やドキュメントについて知っている人はいますか?

4

1 に答える 1

2

アップデート

シナリオは、 http ://www.windowsazure.com/en-us/manage/services/notification-hubs/notify-users-aspnet/ で完全に説明されています。

以下のソリューションは、Notification Hubs がプレビュー版ではなくなり、.NET SDK にいくつかの重大な変更があったため、機能しなくなりました。

古い答え

あなたが概説した解決策は正しいです。注意点は、アプリのバックエンドから登録管理を行う場合、現在登録されているトークンをどこかに保存する必要があることです (通常はデバイス アプリですが、バックエンドのインストール テーブルでも機能します)。

「古い」トークンをデバイスに保存すると仮定すると、次のロジックを実装する必要があります。

バックエンドで

「oldToken」、「newToken」の 2 つのパラメータを取るエンドポイント。これは基本的に、新しい登録を作成する (必要に応じてテンプレート/ネイティブまたはタグを変更する) か、現在の登録を更新します。

var hubClient = NotificationHubClient.CreateClientFromConnectionString(connectionString, "<notification hub name>");
if (hubClient.RegistrationExists("oldDeviceToken"))
{
    hubClient.UpdateRegistrationsWithNewPnsHandle("oldDeviceToken", "newDeviceToken");
} else
{
    hubClient.CreateAppleNativeRegistration("newDeviceToken", new string[] {"myTag"});
}

現在の登録を変更したり、タグを追加したり、テンプレートを変更したりするなど、より多くのシナリオが可能です。hubClient には、これらすべてのメソッドがあり、自明です。大まかな情報は、この記事の最後にあります。

デバイスアプリで

次のロジックを実装します。

  • 古いトークンが保存されていない場合は、新しいトークン (backendEndpoint(newToken, newToken)) を使用してバックエンドに接続し、返されたときにトークンをローカルに保存します。
  • 古いトークンがあり、新しいトークンとは異なる場合は、古いトークンと新しいトークン (backendEndpoint(oldToken, newToken)) を使用してバックエンドに接続し、呼び出しが完了して新しいトークンをローカルに保存します。
  • 古いトークンがあり、新しいものと変わらないが、最後の登録が 30 日以上前に行われた場合は、古いトークン (backendEndpoint(oldToken, oldToken)) でバックエンドを呼び出します。

このシナリオのサンプルをできるだけ早く追加します。

于 2013-02-27T18:52:35.763 に答える