我在android中使用Microsoft azure通知中心进行推送通知。我可以通过nodejs服务器代码发送通知。设备从nodejs服务器获得通知。
问题: - 但是当我使用通知中心时,即使通知中心返回成功代码,通知也不会通过设备。
我遵循通知中心的程序。
步骤-1: - 将gcmTokenId注册到第一次注册时从我的设备获得的通知中心。
notificationHubService.gcm.createNativeRegistration(gcmToken, tags, function(error){
if(error)
{
res.type('application/json'); // set content-type
res.send(error); // send text response
}
else
{
res.type('application/json'); // set content-type
res.send('Registered Successfully!'); // send text response
}
});
以下是注册详情: -
{
ETag: "1"
ExpirationTime: "2014-09-08T06:33:55.906Z"
RegistrationId: "286469132885875691584-1648906343295271447-3"
Tags: "raj"
GcmRegistrationId: "APA91bF6E2U4*********"
_: {
ContentRootElement: "GcmRegistrationDescription"
id: "id"
title: "2864691328694691584-1648906343295271447-3"
published: "2014-06-10T07:04:30Z"
updated: "2014-06-10T07:04:30Z"
link: ""
}-
}
步骤-2: - 使用以下功能将通知发送到集线器。
notificationHubService.gcm.send(
null,
{
data: { message: 'Here is a message' }
},
function (error,response) {
if (!error) {
//message send successfully
res.type('application/json'); // set content-type
res.send(response);
}
});
以下是我从通知中心获得的响应代码。
{
isSuccessful: true
statusCode: 201
body: ""
headers: {
transfer-encoding: "chunked"
content-type: "application/xml; charset=utf-8"
server: "Microsoft-HTTPAPI/2.0"
date: "Tue, 10 Jun 2014 07:07:32 GMT"
}-
}
我在通知中心设置的设置:
请指导我解决这个问题。
答案 0 :(得分:0)
看来,当您注册时,您提供了“raj”作为标签。
{
ETag: "1"
ExpirationTime: "2014-09-08T06:33:55.906Z"
RegistrationId: "286469132885875691584-1648906343295271447-3"
Tags: "raj" <<== HERE
GcmRegistrationId: "APA91bF6E2U4*********"
_: {
ContentRootElement: "GcmRegistrationDescription"
id: "id"
title: "2864691328694691584-1648906343295271447-3"
published: "2014-06-10T07:04:30Z"
updated: "2014-06-10T07:04:30Z"
link: ""
}-
}
标记就像订阅主题 - 它是一个过滤器。
您似乎正在使用Node.js NotificationHubService。
请参阅http://dl.windowsazure.com/nodedocs/GcmService.html。第一个参数是tags
,但在您的代码中,您提供了null
:
notificationHubService.gcm.send(
null, // <-- HERE
{
data: { message: 'Here is a message' }
},
由于null
与标记“raj”不匹配,因此通知中心不会将此消息传递给任何已注册的设备,以仅侦听标记为“raj”的消息。
您应该在send()
方法调用中将标记设置为“raj”,或者从调用createNativeRegistration()
方法中删除该标记。