`
duoerbasilu
  • 浏览: 1482635 次
文章分类
社区版块
存档分类
最新评论

关于windowsphone中的toast消息推送的小结

阅读更多

刚接触了推送通知机制不久,也写了几个demo,以下是几点小结:

(1) 推送toast通知中的格式注意事项:

首先xml的内容格式是固定的,如:

string toastMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
    "<wp:Toast>" +
        "<wp:Text1><string></wp:Text1>" +
        "<wp:Text2><string></wp:Text2>" +
        "<wp:Param><string></wp:Param>" +
    "</wp:Toast>" +
"</wp:Notification>";
其中,当param内容为空时,可以省略不写这一节点。同时,在xml中一些字符是要进行转换的,如下所示(引自msdn):

<Text1> 和 <Text2> 都采用字符串格式。

<Param> 值允许以下格式:

  • /page1.xaml– 定义应用程序启动时导航到的应用程序中的页面。该页面必须以“/”开头。

  • /page1.xaml?value1=1234 &amp;value2=9876– 定义应用程序启动时导航到的页面,以及信息的名称/值对。该页面必须以“/”开头。

  • ?value1=1234 &amp;value2=9876– 包含传递给应用程序默认开始页面的信息名称/值对。该页面必须以“?”开头。

字符

XML 编码

<

&lt;

>

&gt;

&

&amp;

&apos;

&quot;


(2)当服务端发送的toast通知中有xml格式错误或者非法内容时,微软推送服务会关闭此通道,并提示出错。例如我之前在eclipse里用java写了一个简单的Server,结果在运行时总是提示出错(The XML payload contains invalid or improperly formatted XML or the notification type specified in the header does not match the payload type used. The channel has been closed. Check your XML payload for errors and reopen the channel to obtain a new URI.)。
我检查了几遍,才发现是Text1中的中文编码出问题了。我在eclipse中工程的字符编码默认设置为GBK,结果发送出去的消息一直有问题,虽然我在xml中指定了utf-8的形式。后来我把工程设置为utf-8,重新编译运行就好了。

(3)我们Server端想统计推送的成败情况的话,会比较困难。因为从微软推送服务中返回的相应代码中,只是简单的反映了推送通知到达代理服务器的情况,而非通知到达客户端时的结果。比如微软的代理服务器返回了响应码200,我们Server端只是知道了信息已经成功到达了它那里,并且符合转发到客户端程序的条件;至于客户端最终是否真的收到了通知,无法从这里获知。当然,当客户端程序接收到了通知后,可以向Server端汇报,但这并不准确,因为有些信息可能因为程序不在前台运行同时又被用户忽略了。是否有更好的信息收集方案,还在调研中。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics