无法使用Azure.NotificationHubs SDK

时间:2017-06-10 00:40:10

标签: c# windows-phone-8 push-notification toast azure-notificationhub

我使用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:有效内容不是可接受的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);

我的设置可能有什么问题?

1 个答案:

答案 0 :(得分:1)

问题出在这一行

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

&安培;值应该编码,以便Azure Notification Hub SDK可以正确解析xml,因此我将其更改为

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