Azure移动服务:将推送通知发送到特定的Android设备

时间:2015-10-15 10:07:47

标签: java android push-notification registration azure-mobile-services

我尝试使用Azure移动服务发送推送通知。我得到了它的工作,但目前它发送到所有使用应用程序密钥的设备。我意识到在gcm.push.send()函数中,如果我想将它发送给个人或团体,我必须给出一个标签而不是null。

我只想将它发送给当前用户。调用插入的用户。我尝试输入用户gcm注册ID,但这不起作用。

我看到人们注册这样的标签的例子(在push->编辑脚本中):

exports.register = function (registration, registrationContext, done) {

var userId = registrationContext.user.userId;  

   registration.tags.push(userId);

done();
}; 

但是我没有使用身份验证,因此我的user变量未定义。所有ive都是我的项目表(item.id)中的唯一标识符和注册ID(item.regid)。 如何让我的代码生效?这是我的插入内容:

function insert(item, user, request) {
console.log("Registration ID -> " + item.regid);
var payload = {
    "data": {
          "message": "notification added"
         }
};  

request.execute({
success: function() {
    // If the insert succeeds, send a notification.
    push.gcm.send(item.regid, payload, {
        success: function(pushResponse) {
            console.log("Sent push:", pushResponse, payload);
            request.respond();
            },              
        error: function (pushResponse) {
            console.log("Error Sending push:", pushResponse);
            request.respond(500, { error: pushResponse });
            }
        });
    },
error: function(err) {
    console.log("request.execute error", err)
    request.respond();
}
}); 
}

2 个答案:

答案 0 :(得分:3)

通知中心目前无法发送到特定设备。

模拟这种情况的机制是通过注册过程和标签。直接使用Notification Hubs API。注册设备时,请注册以使用适合设备或用户的标签进行收听。例如,注册以收听标签USER-userid和DEVICE-deviceid。

然后,当您要发送到特定设备时,发送到DEVICE-deviceid,如果要发送到注册到特定用户的所有设备,您可以发送到USER-userid;显然,用适当的值替换userid和deviceid。

您可以在此处找到有关标签的更多信息:https://msdn.microsoft.com/library/azure/dn530749.aspx

答案 1 :(得分:0)

如果您想向特定用户发送通知,您必须使用唯一标记或唯一标识符注册它们,如前所述,我同意他的Adrian hall。我同意他的身份。作为Android中的唯一标识符,您可以使用DeviceId和Ios identifierForVendor它们是独特的,他们永远不会改变。