[Parse] [Cloud Code]安装查询返回一个对象,但是没有发送Push

时间:2014-11-27 23:05:32

标签: ios parse-platform push

大多数时候,当我尝试进行推送时,没有人会被发送。 推送控制台选项卡中的“推送已发送”字段显示0.尽管存在与查询匹配的安装。当我取消注释以下几行时,安装成功返回。

尝试通过面板手动发送Push时,在设置受众参数时,正在显示正确的收件人数。发送后,再次“推送已发送”显示ZERO。

安装有deviceTokens [iOS]。 这是我的云代码:

var installationQuery = new Parse.Query(Parse.Installation);
var inUserQuery = new Parse.Query(PKUser);
inUserQuery.equalTo("objectId", toUserID);
installationQuery.matchesQuery("user", inUserQuery);

// installationQuery.find({      
//     success: function(iresults) {
//         console.log("inst results");
//         console.log(iresults);
//     }, error: function(err) { 
//         console.log("inst error");
//         console.log(err);
//     }
// });

// sending a push
Parse.Push.send({
    where: installationQuery,
    data: {
        "alert": user.get("firstName")+": "+shortenedMessage,
        "badge": "Increment",
        "content-available": 1,
        "text": message,
        "from": user.id,
        "id": object.id
    }
}, { success: function() { 
        response.success("ok");
    }, error: function(err) { 
        response.error("push");
    }
});

1 个答案:

答案 0 :(得分:0)

当尝试仅使用用户ID来查找用户安装时,您应该使用指针对象并将其传递给installationQuery,因为在Parse.User上的equalTo比较了objectId,不需要matchesQuery。如果这不起作用,那么您需要检查您拥有的设备令牌是否对该手机+安装有效,因为设备令牌可以更改(ios 7 device token is different for same device)。

var installationQuery = new Parse.Query(Parse.Installation);

var pointerUser = new Parse.User();
pointerUser.id = toUserID;
installationQuery.equalTo("user",pointerUser);

Parse.Push.send({
    where: installationQuery,
    data: {
        "alert": user.get("firstName")+": "+shortenedMessage,
        "badge": "Increment",
        "content-available": 1,
        "text": message,
        "from": user.id,
        "id": object.id
    }
}).then(function(){
  response.success("ok");
},function(){
  response.error("push");
});