1

请举例说明,因为我收到错误:400 - 指定的资源描述无效。

基本上,我想更新徽章值。但是 WnsService API 文档 ( http://azure.github.io/azure-sdk-for-node/azure-sb/latest/WnsService.html ) 中没有徽章注册模板。所以,我正在尝试使用“createRawTemplateRegistration”模板来更新徽章值。请帮助我。

4

1 回答 1

0

您可以直接使用该功能sendBadge()将徽章值推送到客户端设备。

请尝试以下代码:

var azure = require('azure');
var notificationHubService = azure.createNotificationHubService('<hubname>', '<connectionstring>');
notificationHubService.wns.sendBadge(null,99,function(error,response){
    if(error) console.log(error);
    console.log(response);
})

如有任何进一步的疑虑,请随时告诉我。

更新

您的意思是您只需要一个模板并处理所有类型的通知,包括 Raw、Toast、Badge?如果是这样,我认为答案是否定的。根据描述http://azure.github.io/azure-sdk-for-node/azure-sb/latest/WnsService.html#createRawTemplateRegistration

请记住,您必须指定 X-WNS-Type 标头

所以 header 选项是必需的。根据nodejs中通过这个api调用的REST API是Create Registration,我们可以找到描述:

BodyTemplate 元素是必需的,X-WNS-Type 标头也是如此。

所以我们应该为模板指定通知类型。

更新1

此代码示例在我这边运行良好:

var channel = '<devicetoken>';
var templateMessage = { text1: '$(message)' }; 
notificationHubService.wns.createRawTemplateRegistration(channel,'tag',JSON.stringify(templateMessage), {headers: { 'X-WNS-Type': 'wns/raw' }},
    function (e, r) {
        if (e) {
            console.log(e);
        } else {
            console.log({
                id: r.RegistrationId,
                deviceToken: r.DeviceToken,
                expires: r.ExpirationTime
            });
        }
    }
)
于 2016-06-22T10:17:09.300 回答