为多个应用创建单一推送通知渠道

Create single push notification channel for multiple apps

为了发送和接收推送通知,我想将我的所有应用程序注册到推送通道:

var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

我现在可以通过此频道发送和接收推送。

问题是这个频道只对一个应用程序有效。如果我在另一台设备上安装相同的应用程序,我只会在发送消息的同一台设备上收到消息。

如何将通知推送到我的所有设备?

您是否试图在多台设备上安装同一个 debug-based 应用程序? 我相信该频道基于应用程序的某些身份,因此请尝试 release 它并且我希望您创建一个 store-based hidden 应用程序并对其进行测试..

您编写的代码适用于数百万台设备:)

每个应用安装的推送渠道都是唯一的。您只能使用它向这个安装发送推送。如果你想向所有设备发送推送 运行 你的应用程序,你必须在某个地方(你的服务器等)收集推送通道信息,或者你可以使用像 https://parse.com/ 这样提供针对多个设备的服务一次设备。

根据这篇文章,

设备可以在注册通知中心时指定一个或多个标签,这些标签不需要预先配置或销毁,并为应用程序提供一种非常简单的方法来向数百万台设备发送有针对性的通知单个 API 调用,而无需实现自己的每设备通知路由基础结构 - https://blogs.windows.com/buildingapps/2013/09/16/delivering-push-notifications-to-millions-of-devices-with-windows-azure-notification-hubs/#mQppyhpwaEAcMehc.97

在您的 Windows 商店应用中,使用 Windows 商店设备 SDK,您只需调用

即可注册到您的通知中心
await hub.RegisterNativeAsync(channel.Uri, new string[] { "myTag", "myOtherTag" });

然后您可以让您的 .NET 后端向所有客户端广播一条消息,只需调用

var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">Hello everybody!</text></binding></visual></toast>";

await hub.SendWindowsNativeNotificationAsync(toast);