无法使用 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¶m2=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¶m2=value2</wp:Param>
& 值应进行编码,以便 Azure 通知中心 SDK 可以正确解析 xml,因此我将其更改为
<wp:Param>?param1=value1&param2=value2</wp:Param>
我正在使用 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¶m2=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¶m2=value2</wp:Param>
& 值应进行编码,以便 Azure 通知中心 SDK 可以正确解析 xml,因此我将其更改为
<wp:Param>?param1=value1&param2=value2</wp:Param>