我使用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:有效内容不是可接受的XML格式。 第一个节点应该是Tile / Toast。如果想发送原始通知, 请设置&#34; X-NotificationClass&#34;到&#34; 3&#34;在标题中。在 Microsoft.Azure.NotificationHubs.RegistrationSDKHelper.DetectMpnsTemplateRegistationType(字符串 body,String errorMsg)
我试图直接从天蓝色的门户网站或视觉工作室发送推送 - 它工作正常。所以我想这个问题就在SDK的某个地方。
This guide显示如何使用常规网络请求发送相同的通知,并设置特殊标头以发送吐司
sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "toast");
sendNotificationRequest.Headers.Add("X-NotificationClass", "2");
使用Azure SDK,我无法设置这些标头,只能使用以下方法发送我的有效负载,这会给我上述错误:
await Hub.SendMpnsNativeNotificationAsync(payload, userIdTag);
我的设置可能有什么问题?
答案 0 :(得分:1)
问题出在这一行
<wp:Param>?param1=value1¶m2=value2</wp:Param>
&安培;值应该编码,以便Azure Notification Hub SDK可以正确解析xml,因此我将其更改为
<wp:Param>?param1=value1&param2=value2</wp:Param>