使用Azure通知中心向单个用户发送通知

11

我正在为一个应用创建 Web API 后端。该应用目前仅计划适用于 WP8,但我们也计划稍后推出其他平台的版本。

我们基于 Azure 通知中心实现推送通知。应用程序不会直接注册,而是将调用一个 Web API 方法来进行注册操作。

以下有两个问题让我很困惑:

  1. 我找不到有关向单个 WP8 用户发送通知的文档。我不想广播;我只想向一个用户发送一条通知。这种情况是否得到支持?如何使用 Microsoft.ServiceBus.Notifications API 实现?

  2. 我找到了这个链接:http://www.windowsazure.com/en-us/documentation/articles/notification-hubs-aspnet-notify-users/ - 它实现了我需要的很多通知功能。示例仅包括 iOS 和 Windows 应用程序。这是因为 WP8 不支持这种使用情况吗?我不知道原因,因为我对 WP8 还比较新。


1
如果你还没有看过这个,请务必查看一下:http://blogs.msdn.com/b/andy_wigley/archive/2013/08/22/push-notifications-made-easy-using-windows-azure-notification-hubs-with-windows-phone.aspx - Aravind
@Aravind - 谢谢。我已经看过这个,但它展示了如何发送广播通知。我正在寻找向单个用户发送单个通知的示例,而这个示例缺少识别设备ID和安装ID的注册部分。 - Elad Lachmi
前段时间我曾经参与了一个项目,使用MPNS向已注册的WP用户发送推送通知。当您注册时,MPNS会提供一个channelUri,该uri与特定设备/用户相关联。类似于这样的链接:https://dev59.com/gnfZa4cB1Zd3GeqPS4pQ - Aravind
@Aravind - 这个例子讲述了手动存储和处理Uri的方法。我可以这样做,但我想利用Azure通知中心。 - Elad Lachmi
@Elad 请查看**完整的工作实现在这里**。您可以进行少量更改后直接使用。 - Premchandra Singh
3个回答

12
Azure通知中心支持标签,例如这里的示例。
在Channel9的网络广播中(我现在找不到),他们讨论了利用标签向特定用户/组发送通知的方法。
由于我希望利用通知中心的所有附加值,因此我将使用应用程序中使用的用户名对每个条目进行标记,并使用该标记按用户名向特定用户发送通知。 编辑: 在这里在官方的Windows Azure文档中,我找到了一个关于我要做的事情的示例。作为额外的奖励,他们还给了我一个标记安装ID的想法,这样您可以让同一用户在具有不同操作系统的不同设备上获得本机通知。

有没有关于在 JavaScript 后端完成相同任务的参考资料? - TheLoneWolf91193

3

1
不错!:) 但我仍然有一个问题。通知中心似乎更加受控。我完全支持DIY方法,但当我必须手动管理数百万用户时(希望一切顺利:)),我就不再支持了。移动中心架构听起来更加强大和功能齐全,而移动服务似乎限制每个设备每天只能发送500条通知。 - Elad Lachmi
@EladLachmi 我理解你的观点。我没有深入研究移动服务。也许你需要设计一种分类用户的方式,以便将想要单独通知和批量通知的用户区分开来。如果个别通知是唯一的选择,那么你可以考虑使用 URI 方法。 - Aravind

3
虽然其他人已经讲解了如何使用标签,但还有一个不太为人知的选项。Azure Notification Hubs REST API文档中的Direct Send页面提供了以下内容:https://msdn.microsoft.com/en-us/library/azure/mt608572.aspx

简单来说,您需要在URL的查询字符串中添加“direct”,并将推送令牌作为“*-DeviceHandle”标头提供。

此API的用户无需使用Registrations或Installations。相反,此API的用户自己管理所有设备,并仅使用Azure Notification Hub作为通过服务与各种推送通知服务通信的中介服务。

这是什么意思?在调用ANH REST API之前,您需要从客户端获取设备推送令牌(并高效地重复使用它)。

最后一点提示:对于之前遇到过但却望而却步的任何人:文档曾经声明您必须联系支持团队才能选择该功能,但最近我询问时更新了文档以删除此注意事项。 :)


小更新:您需要使用标准类型的通知中心(其具有不同的定价)。 - Matt Kerr
更新:看起来这种方法可能不再受支持。 - Matt Kerr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接