无法使用 Azure.NotificationHubs SDK 发送 Windows Phone 推送通知

Unable to send Windows Phone push notification using Azure.NotificationHubs SDK

我正在使用 Microsoft.Azure.NotificationHubs SDK v1.0.8 与 Azure 通知中心集成并发送推送。虽然 iOS 和 Android 工作正常,但我的 Windows Phone 推送在一段时间前就停止工作了。我使用的有效负载是:

<?xml version="1.0" encoding="utf-8"?>
<wp:Notification xmlns:wp="WPNotification">
   <wp:Toast>
    <wp:Text1>Notification Title</wp:Text1>
    <wp:Text2>Notification Text!</wp:Text2>
    <wp:Param>?param1=value1&param2=value2</wp:Param>
   </wp:Toast>
</wp:Notification>

这是我遇到的错误:

System.ArgumentException: The payload is not in accepted XML format. The first node should be Tile/Toast. If want to send raw notification, please set "X-NotificationClass" to "3" in header. at Microsoft.Azure.NotificationHubs.RegistrationSDKHelper.DetectMpnsTemplateRegistationType(String body, String errorMsg)

我尝试直接从 Azure 门户或 visual studio 发送推送 - 它工作正常。所以我猜问题出在 SDK 的某个地方。

This guide 显示如何使用常规网络请求发送相同的通知,并且特殊 headers 设置为发送 toast

sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "toast");
sendNotificationRequest.Headers.Add("X-NotificationClass", "2");

使用 Azure SDK 我无法设置这些 headers 并且只能使用以下方法发送我的有效载荷,这给我带来了上述错误:

await Hub.SendMpnsNativeNotificationAsync(payload, userIdTag);

我这里的设置有什么问题吗?

问题出在这一行

<wp:Param>?param1=value1&param2=value2</wp:Param>

& 值应进行编码,以便 Azure 通知中心 SDK 可以正确解析 xml,因此我将其更改为

<wp:Param>?param1=value1&amp;param2=value2</wp:Param>