I\'m using Parse and I can\'t make this method to work.
The idea is to send push to a single user with an already known user identifier from any platform within \'Cl
You can join Parse.Session and Parse.Installation with a user pointer as the Session primary key, next "installationId" as the join key.
var PushSend = function(payload, dbContact) {
var querySession = new Parse.Query(Parse.Session);
querySession.equalTo("user", dbContact);
querySession.descending("updatedAt");
querySession.first({ useMasterKey: true })
.then(function(dbSession) {
var installId = dbSession.get("installationId");
var installQuery = new Parse.Query(Parse.Installation);
installQuery.equalTo("installationId", installId);
Parse.Push.send( {
where: installQuery,
data: {
alert: payload
}
}, { useMasterKey: true} )
.then(function() {
// "success"
}, function(error) {
// "failed"
} );
}, function(error) {
// "failed"
} );
}
The above cloud function takes as arguments :
I am using the first of the two methods that you mentioned, and it works fine.
Just make sure that you use objectId and not the username for targetUser.id
.
Ex:
targetUser.id = 'Qhao1j22j'; //Never hard code like this though.
This works well for me, but you have to link your users with your installations before:
var query = new Parse.Query(Parse.User);
query.equalTo('username', 'Sento');
// Find devices associated with these users
var pushQuery = new Parse.Query(Parse.Installation);
// need to have users linked to installations
pushQuery.matchesQuery('user', query);
Parse.Push.send({
where: pushQuery,
data: {
aps: {
alert: "Test",
sound: ""
}
}
}, {
success: function () {
response.success("Hello world!");
},
error: function (error) {
response.error(error);
}
});