- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想向特定 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 通知中心控制台对其进行测试(该控制台与上一步一起使用,将其发送给所有客户端:
这导致应用程序收到通知(它不会过滤“en-us”)。然后我尝试将“en-us”放入“发送到标记表达式”中:
这样,就不会收到任何 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");
不确定“自定义模板”是否也可以用于 Android 和 iOS。那就太棒了。
关于c# - 如何在 UWP 应用中使用 Azure 通知中心标签推送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65362853/
我是一名优秀的程序员,十分优秀!