推送通知时 MPNS 错误请求(WP 8.1)

MPNS bad request when push notification (WP 8.1)

我目前正在为 Windows Phone 8.1.

开发基于 Cordova(版本 4.0.0)的移动应用程序

我从 API Java-MPNS(来自 github 的 notnoop)实现了 Java 代码来向我的设备发送通知。

当我将通知消息推送到 MPNS 时,出现此错误:

HTTP/1.1 400 错误请求 [内容长度:0,X-WNS-MSG-ID:50267BB8627BC17D,X-WNS-DEBUG-TRACE:DB5SCH101121935,严格传输-安全性:max-age=31536000; includeSubDomains,WWW-Authenticate:Bearer,日期:2016 年 1 月 7 日星期四 09:13:01 GMT] org.apache.http.conn.BasicManagedEntity@1ab5b13

来自 推送通知服务响应代码的文档 Windows Phone 8,此错误代码表示 XML 文档或通知 URI格式不正确。

这是我的通知 URI:

https://db5.notify.windows.com/?token=AwYAAAC%2fHaOBh3zOgFjUbZuCSMgzXY29aQDT9wKfpkiPsd85WKBA8muqx4is4r1nBVXQOtRKqe5cc%2fxat7hq6sZBruvm6nQF7p9Sl71TIiqnGvlrdDDw6v0anax4bXUCtflPwEc%3d

这是 XML 文档(由 Java-MPNS 从 Java class TileNotification 生成):

<?xml version="1.0" encoding="utf-8"?>
    <wp:Notification xmlns:wp="WPNotification">
        <wp:Tile>
            <wp:Count>1</wp:Count>
            <wp:Title>Demo App Windows</wp:Title>
            <wp:BackContent>New notification</wp:BackContent>
        </wp:Tile>
    </wp:Notification>

当我比较此 XML 文档和 如何发送和接收 Windows Phone 8[的 Tile 通知的文档中的 XML 文档时=38=],我没有看到任何差异或错误。关于我的通知 URI,我认为 link 是正确的。

但是,http://db3.notify.live.net and https://db5.notify.windows.com 有什么区别?

有没有人已经在使用这个API?您知道如何修复它吗?

*.notify.live.net 是一个 MPNS 频道 URI,而 *.notify.windows.com 是一个 WNS 频道 URI。您正在获取 WNS 通道 URI(也就是您的应用设置为使用 WNS),但您正在尝试使用 MPNS。 400 是因为 WNS 希望您使用 OAuth 进行身份验证。

如果您真的想在新应用程序中使用 MPNS 而不是 WNS,我会 double-check。 MPNS 在这一点上被认为是遗留的。如果您希望在某个时候将您的应用程序移植到 Windows 构建 UWP,则需要切换到 WNS。更多 details/guidance 可以在这里找到:https://msdn.microsoft.com/en-us/library/windows/apps/dn642085(v=vs.105).aspx

如果您确实需要使用 MPNS,请确保您正在使用 MPNS API 来请求您的频道:https://msdn.microsoft.com/en-us/library/windows/apps/microsoft.phone.notification(v=vs.105).aspx, not the WNS APIs: https://msdn.microsoft.com/en-us/library/windows/apps/hh465412.aspx