Parse Cloud: Send Push to a single user

后端 未结 3 594
灰色年华
灰色年华 2020-12-30 14:09

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

相关标签:
3条回答
  • 2020-12-30 14:41

    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 :

    1. the payload text string
    2. a destination contact pointer (you have for example previously queried from Parse.User)
    0 讨论(0)
  • 2020-12-30 14:46

    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.
    
    0 讨论(0)
  • 2020-12-30 14:48

    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);
        }
    });
    
    0 讨论(0)
提交回复
热议问题