解析云推送通知正在推送给所有用户而不是目标用户

Parse cloud push notifications are pushing to all users instead of targeted user

我无法将推送通知定位到单个用户。现在,无论哪个用户登录到我的测试设备,我的测试设备都会收到推送通知。即使当我向当前注销的 _User 发送推送并且设备使用完全不同的 _User 登录时,它也会收到推送通知。

我已经使用 parse.com 设置了云代码,以便能够向用户发送推送通知。我在安装 class 中有一个 "user" 指针指向将接收推送通知的 cooresponding _User。

示例:_用户 "Sam" 已登录到移动设备。我从 Xcode 中的 iOS 模拟器向 _User "steve" 发送了一个推送。即使 "Sam" 已登录,移动设备也会收到推送。即使没有用户登录,它也会收到推送。

当我检查 Push control on parse 时,cloud cloud 似乎正在正确查询安装中与 _User class 的 objectId 匹配的 "user" 指针,如下所示:

user advanced operator ($inQuery {"className"=>"_User", "objectId"=>"LJQXaJDzkU"}) 
SENDING TIME
August 5th, 2015 at 3:01 PM

EXPIRATION
None

FULL TARGET
{ 
  "user": { 
    "$inQuery": { 
      "className": "_User", 
      "objectId": "LJQXaJDzkU" 
    } 
  } 
}

FULL DATA

这是查询用户并从解析云发送推送的云代码。 recipientUserId 接收接收推送的 _User 的 objectId 字符串。

Parse.Cloud.define("sendPush", function(request, response) {
 var senderUser = request.user
 var recipientUserId = request.params.recipientId;
 var senderUserId = request.params.senderId;
    var message = senderUserId + " sent a message"
  
   var recipientUser = new Parse.User();
 recipientUser.id = recipientUserId;
 var pushQuery = new Parse.Query(Parse.Installation);
 pushQuery.matchesQuery('user', recipientUser);
 
 Parse.Push.send ({
  where: pushQuery,
  data: {
   aps: {
    alert: message,
    badge: "Increment",
    sound: "cow-moo1.wav"
   }
  }
 }, {
  success: function() {
  response.success("Success!");
 }, 
  error: function(error) {
  response.error(error);
 }
 
 });
 
});

推送没有问题,我可以在设备上打开它们,但我真的不知道为什么即使被查询的用户甚至没有登录设备,推送也会被发送到设备.任何有关发生的事情的想法将不胜感激。谢谢!!!

编辑您的代码,以便在您注销时从安装中删除用户。

编辑 - 下面的评论中提到了这一点,所以我想确保在这里提到它,以防它是有效的解决方案。 OP 使用了 matchesQuery,它需要传入查询,但传入的是 Parse.User 对象。我建议他使用 equalTo 而不是 matchesQuery。