2

Azure Notification Hubs を使用してクライアントにプッシュ通知を送信しようとしています。タグを使用して各ユーザーを識別するこの記事を読みました。

https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-aspnet-backend-windows-dotnet-notify-users/

機能しますが、タグの数は限られています。Hub が返す登録 ID を保存して使用することを考えていました。

この ID を使用して通知を送信する方法はありますか?

もう 1 つの方法は、WNS によって返される Channel.URI を使用することです。これは何とか実装できますか?

4

2 に答える 2

2

実際には、NH は1 つの登録ごとにタグの数のみを制限しますが、ハブごとに必要な数の登録を行うことができ、各登録には通知のルーティングに使用できる一意のタグが含まれる場合があります。

また、Notification Hubs 用の新しいインストール API もあります。これは、より適していると思います。まだ十分に文書化されていませんが、よくできていてすぐに使用できます。ここでは、その API の使用方法の簡単な説明を見つけることができます。Readme は Java に関するものですが、.NET SDK にはほとんど同じ機能があります (最終的に、どちらも同じ REST API を呼び出します)。

于 2015-10-16T19:05:35.983 に答える
1

キーワードはタグ!Android、IOS、Windows OSなどの登録済みデバイスに特定のタグを使用すると、特定のデバイスに通知を送信できます。

これらを行うには、以下の手順を 1 つずつ実行する必要があります。

  • クライアント側として、特定のタグを使用して、選択した Azure Notification Hub にデバイスを登録します

Android のクライアントの例:

`/*you don't have to use Firebase infrastructure. 
  You may use other ways. It doesn't matter.*/`
   String FCM_token = FirebaseInstanceId.getInstance().getToken();
   NotificationHub hub = new NotificationHub(NotificationSettings.HubName,
                                  NotificationSettings.HubListenConnectionString, context);
   String registrationID = hub.register(FCM_token, "UniqueTagForThisDevice").getRegistrationId();

"UniqueTagForThisDevice"ご覧のとおり、選択した Android デバイスに対して一意のタグ呼び出しを使用しました。

  • サーバー側として、その TAG 呼び出しを使用して通知を送信する必要があります "UniqueTagForThisDevice"

Web API を使用して選択した Android デバイスをプッシュ送信するサーバーの例:

  [HttpGet]
  [Route("api/sendnotification/{deviceTag}")]
  public async Task<IHttpActionResult> sendNotification(string deviceTag)
  {
      //deviceTag must be "UniqueTagForThisDevice" !!!
      NotificationHubClient Hub = NotificationHubClient.CreateClientFromConnectionString("<DefaultFullSharedAccessSignature>");
      var notif = "{ \"data\" : {\"message\":\"Hello Push\"}}";
      NotificationOutcome outcome = await Notifications.Instance.Hub.SendGcmNativeNotificationAsync(notif,deviceTag);
      if (outcome != null)
      {
         if (!((outcome.State == NotificationOutcomeState.Abandoned) ||
            (outcome.State == NotificationOutcomeState.Unknown)))
            {
                return Ok("Push sent successfully.");
            }
      }
      //Push sending is failed.
      return InternalServerError();
  }
  • 最後に、任意のヘルパー プラットフォーム (Postman、Fiddler など) のタグを使用して、上記の Web API サービス メソッドを呼び出す必要があります"UniqueTagForThisDevice"

注 : TAGは、deviceToken などである必要はありません。デバイスごとに特定する必要があります。ただし、WebAPI を使用していて、それが Owin ミドルウェアに関連している場合は、一意のタグとしてユーザー名を使用することをお勧めします。これは、アプリケーション シナリオでより利用できると思います。このようにして、一意のデバイスから一意のユーザーに通知を送信できます;)

それで全部です。

于 2016-12-27T08:27:02.137 に答える