【问题标题】:[Parse][CloudCode] InstallationQuery returns an object, but Push is not being send[Parse][Cloud Code] 安装查询返回一个对象,但没有发送推送
【发布时间】:2014-11-27 23:05:32
【问题描述】:

大多数时候,当我尝试进行推送时,都没有发送任何内容。 Push 控制台选项卡中的“推送已发送”字段显示为 0。尽管存在与查询匹配的安装。当我取消注释下面这几行时,安装成功返回。

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

安装有 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");
    }
});

【问题讨论】:

    标签: ios parse-platform push


    【解决方案1】:

    当尝试仅使用用户 ID 来查找用户安装时,您应该使用指针对象并将其传递给 installationQuery,因为 Parse.User 上的 equalTo 比较 objectId 不需要 matchQuery。如果这不起作用,那么您将需要检查您拥有的设备令牌是否对该电话+安装有效,因为设备令牌可以更改 (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");
    });
    

    【讨论】:

    • 这实际上没有帮助。我已经测试了installationQuery 本身并且它一直在正常工作。也许由于苹果方面的某些原因,deviceTokens 被拒绝了。我该如何调试它? DeviceTokens 90% 正确。这可能是推送通知证书的问题吗?在此先感谢:)
    • 您是否制作了开发推送证书和生产推送证书?你知道如何正确设置它们吗?如果不去https://www.parse.com/docs/push_guide#troubleshooting/iOS 并仔细检查列表,这是一个非常好的常见问题列表。否则,只需按照此链接https://www.parse.com/docs/push_guide 上的步骤从头开始执行此操作。不要忘记在最后一个链接中选择您的环境 - iOS、Android 等。
    • 似乎重新生成推送证书完成了这项工作!谢谢。我不知道如何将评论标记为问题的正确答案:F
    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多