gpt4 book ai didi

c# - 如何在 UWP 应用中使用 Azure 通知中心标签推送消息

转载 作者:行者123 更新时间:2023-12-03 00:00:28 26 4
gpt4 key购买 nike

我想向特定 channel (例如“en-us”和“fr-fr”)中的应用发送推送消息,以本地化推送通知。

首先,我按照本教程进行操作,一切正常: https://learn.microsoft.com/en-us/azure/notification-hubs/notification-hubs-windows-store-dotnet-get-started-wns-push-notification

那里的工作登记是:

var result = await hub.RegisterNativeAsync(channel.Uri);

但这就是向所有客户端发送一条消息。然后我按照这个教程进行操作: https://learn.microsoft.com/en-us/azure/notification-hubs/notification-hubs-windows-notification-dotnet-push-xplat-segmented-wns

我可以从与 uwp 代码的困惑混合中提取出这一行:

var hub = new NotificationHub("AppName", "endpoint");

const string templateBodyWNS = "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(messageParam)</text></binding></visual></toast>";

var result = await hub.RegisterTemplateAsync(channel.Uri, templateBodyWNS, "simpleWNSTemplateExample", new string[] { "en-us" });

结果还给了我一个有效的注册。

然后我尝试使用 azure 通知中心控制台对其进行测试(该控制台与上一步一起使用,将其发送给所有客户端: enter image description here

这导致应用程序收到通知(它不会过滤“en-us”)。然后我尝试将“en-us”放入“发送到标记表达式”中:

enter image description here

这样,就不会收到任何 Toast 消息。

然后我尝试通过 Microsoft.Azure.NotificationHubs 包发送消息。

此代码有效:

NotificationHubClient Hub = NotificationHubClient.CreateClientFromConnectionString(endpoint,  name);
string toast = @"<?xml version='1.0' encoding='utf-8'?>
<toast>
<visual><binding template='ToastText01'>
<text id='1'> Test message </text>
</binding>
</visual>
</toast>
";
var result = await Hub.SendWindowsNativeNotificationAsync(toast);

Toast 消息到达。但是一旦我将最后一行更改为:

var result = wait Hub.SendWindowsNativeNotificationAsync(toast, "en-us");

什么也没有到达。所以Notification Hub通过WNS成功链接到客户端,但是使用标签根本不起作用。我做错了什么?

最佳答案

好吧,我想通了,对于有同样问题的人来说:

首先,其他人可能也会对此感到困惑,我们需要了解定义推送模板的概念与 FCM(适用于 Android)的工作方式不同。在 FCM 中,您可以定义推送消息服务器端的布局和内容。

在 UWP 中,使用标签时会发生在客户端。设计 Toast 时,您可以将变量放入其中,然后由服务器端填充。

这是工作代码。

客户端:

var hub = new NotificationHub("Hubname", "endpoint");
string toast = @"<toast>
<visual><binding template='ToastGeneric'>
<text id='1'>$(Title)</text>
<text id='2'>$(Message)</text>

<text placement='attribution'>via SMS</text>
</binding>
</visual>
</toast>
";
var result = await hub.RegisterTemplateAsync(channel.Uri, toast, localizedWNSTemplateExample", new string[] { "myTag" });

服务器端:

NotificationHubClient Hub = NotificationHubClient.CreateClientFromConnectionString(endpoint, name);
Dictionary<string, string> templateParams = new Dictionary<string, string>();
templateParams["Title"] = "Title here";
templateParams["Message"] = "Message here";
await Hub.SendTemplateNotificationAsync(templateParams, "myTag");

您可以通过网络使用“自定义模板”平台发送消息: enter image description here

不确定“自定义模板”是否也可以用于 Android 和 iOS。那就太棒了。

关于c# - 如何在 UWP 应用中使用 Azure 通知中心标签推送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65362853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com