适用于 Windows 商店 8.1 的 Windows Azure node.js 推送通知 - 如何使用“createRawTemplateRegistration”模板?

Posted

技术标签:

【中文标题】适用于 Windows 商店 8.1 的 Windows Azure node.js 推送通知 - 如何使用“createRawTemplateRegistration”模板?【英文标题】:Windows Azure node.js Push notification for Windows store 8.1 - How to use 'createRawTemplateRegistration' template? 【发布时间】:2016-06-21 10:43:48 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

您可以直接使用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
            );
        
    
)

【讨论】:

是的,sendBadge() 可以使用,但这需要服务器端的更改。对?我想在 azure 上注册一个模板,并且每次都应该根据该模板接收推送,而无需在服务器端进行更改。例如。我已注册此模板以接收 toast 推送。同样我想要徽章值更新。 templateMessage = text1: '$(message)' ; hub.wns.createToastText01Registration(pushIdentifier, [userId, platform, version, tag], templateMessage, registrationComplete); UWP中的徽章模板是一种特殊的xml字符串,似乎无法自定义,具体可以参考msdn.microsoft.com/en-us/library/windows/apps/hh779719.aspx。整个徽章字符串为&lt;badge value="&lt;value&gt;"/&gt;,可接受的值类型为数字字符或UWP系统中预定义的字符串。 难道不能像我们为 toast 做的那样在 azure 上为徽章注册一些模板吗? (吐司模板在我之前的评论中提供。)。从服务器我得到两件事。 1. 消息 2. 计数 此计数可用于更新徽章。但为此,我需要一个在 azure 上注册的模板。希望你能得到我的问题。请询问您是否需要更多信息。 由于评论长度限制,请参考更新。如果我有什么误解,请随时告诉我。 没有必要让一个模板处理所有类型的通知,即徽章、吐司等。我希望徽章注册模板在 azure 上注册。但是我发现没有徽章注册模板。只有 sendbadge() 模板。因此,我曾考虑为此目的使用“createRawTemplateRegistration”模板,因为在该标头类型中我可以指定“wns/badge”。这是模板格式:createRawTemplateRegistration(channel, tags, template, optionsOrCallbackopt, callback)。

以上是关于适用于 Windows 商店 8.1 的 Windows Azure node.js 推送通知 - 如何使用“createRawTemplateRegistration”模板?的主要内容,如果未能解决你的问题,请参考以下文章

windows 8.1哪个版本好

xml 适用于Windows 8.1和Windows Phone 8.1应用程序的扩展器控件演示。

xml 适用于Windows 8.1和Windows Phone 8.1应用程序的扩展器控件的模板。

适用于 Windows 8.1 的 MIME pdf

适用于 Windows Phone 8.1 的 XMPP 库

适用于 Windows 8.1 的 Nvidia GeForce 驱动程序无法在 Windows 10 上运行 [关闭]