当前位置: 首页 > 知识库问答 >
问题:

通过Azure通知中心使用注册ID发送推送通知

宗政深
2023-03-14

我正在尝试使用Azure通知中心向客户端发送推送通知。我读了这篇文章,它使用标签来识别每个用户。

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

它可以完成这项工作,但标记的数量有限。我正在考虑存储和使用中心返回的注册ID。

是否有任何方法可以使用此ID发送通知?

另一种方法是使用该频道。WNS返回的URI。这能以某种方式实现吗?

共有2个答案

卓麒
2023-03-14

关键字是TAG!如果您对任何已注册的设备(Android、IOS、Windows OS等)使用任何spesific标记,您可以向任何特定设备发送通知。

要做到这些,你应该一个接一个地遵循以下步骤;

  • 作为客户端,使用spesific标记将设备注册到选定的Azure通知中心

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();

如您所见,我们为选定的Android设备使用了唯一的标签调用“UniqueTagForThisDevice”

  • 作为服务器端,您应该使用该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或其他平台)的“UniqueTagForThisDevice”标记调用上述Web API服务方法

注意:标签不必是deviceToken或类似的东西。它只需要为每个设备指定。但我建议您,如果您使用WebAPI,并且它与Owin中间件相关,那么您可能更喜欢用户名作为唯一标记。我认为,这更适用于应用场景。通过这种方式,您可以将通知从唯一的设备发送给唯一的用户;)

这就是全部。

汪安宁
2023-03-14

实际上,NH只限制每个注册的标签数量,但每个中心,您可以根据需要拥有尽可能多的注册,并且每个注册可能具有唯一的标签,您可以使用这些标签来路由通知。

此外,还有用于通知中心的新安装API,我相信它更适合您。它仍然没有很好的文档记录,但做得很好,可以随时使用。在这里,您可以找到如何使用该API的简短描述。自述是关于Java的,但是。NET SDK具有几乎相同的功能(最终都调用相同的REST API)。

 类似资料:
  • 如何通过Azure从我的UWP-App向不同设备上的应用程序的其他实例发送推送通知? 以下是注册设备以接收推送的说明。(这是可行的)第二部分是关于如何在控制台应用程序上发送推送(这也是可行的)https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-star

  • 我正在尝试使用parse.com推送通知服务向我的iOS应用添加推送通知,但我遇到了一些问题,我的一些设备没有收到通知。 当前代码 这似乎在某些设备上起作用(在同事的iPhone5上测试过--起作用了,在我老板的iPhone6上测试过--不起作用) 第43行: 警告2: /users/ds/code/rp-ios/rp/appdelegate.swift:44:25:iOS 8.0中不推荐使用“R

  • 我在PushKit VoIP通知上发现了一些与Azure通知中心支持相关的帖子: https://social.msdn.microsoft.com/Forums/ie/en-US/afda14fe-1218-4ca1-a1ee-205ccd241d1a/support-for-apple-voip-pushkit-push-notifications?forum=notificationhubs

  • 问题内容: 我已经在项目中实现了推送通知,到目前为止一切正常。我尝试过通过Pusher发送通知,但效果很好。但是我必须通过PHP发送它们,但尚无法使用。我发现了许多有关如何实现此目标的旧解释,但似乎没有一个对我有用。 这就是我要使用的方法: 问题答案: 尝试使用此php脚本,确保.pem证书在运行时以与该php脚本相同的路径退出,并获得正确的设备令牌

  • 我正在尝试从远程服务器向应用程序进行非常简单的推送。 我已根据[1]在Azure上设置了通知中心,但我无法获取设备的调试消息。我不想使用移动服务从DB表读/写 我在Swift中这样做,但我在互联网上没有发现任何真正从服务器接收推送的是iOS Swift作为完整的教程。 例如,我不知道如何在swift中编写以下代码: 到目前为止,这是我在AppDelegate中的代码(我从[2]中获得的一些代码):

  • 我正在尝试向Xamarin添加推送通知。使用本教程的iOS应用程序https://docs.microsoft.com/en-us/azure/notification-hubs/xamarin-notification-hubs-ios-push-notification-apns-get-started 我已经按原样完成了所有步骤,以下是我迄今为止尝试的步骤:- AppDelegate。反恐精