如何推送到列表中的频道,而不重复

how to push to channel which is in list, without duplicate

我在发送推送通知时遇到 PARSE 查询 "OR" 的问题

tldr:我希望能够推送通知所有订阅了 2 个频道之一的用户 - 使用 OR - 这样每个用户(即使订阅了 2 个频道)也只会收到一个通知。

例如:我有以下频道:

channel1 channel1_sub

想象一个订阅了 channel1channel1_sub 的用户 - 我希望能够向订阅了 channel1 或 [=12] 的用户发送推送=]

实际尝试了以下查询(在发布推送时):

{
    "where": {
        "channels": {
            "$in": [
                "channel1",
                "channel1_sub"
            ]
        }
    },
    "data": {
        "alert": "test"
    }
}

导致 2 次推送 - 预计应该是一次 - 如果用户订阅了两个频道!

有什么帮助吗?

问候

好的,所以我找到了使用 $or 运算符的解决方案:

使用来自 parse.com 的 PHP-SDK:

    $cat = array('channel1', 'channel_1_sub');
    $or_QUERY=array();

    for($z=0; $z<count($cat); $z++) {
        $query = ParseInstallation::query();
        $query->equalTo("channels", $cat[$z]);      
        $or_QUERY[]=$query;
    }

    $query_or = ParseQuery::orQueries($or_QUERY);

    $push_data = array(
      "where" => $query_or,
      "data" => $data
    );

    ParsePush::send($push_data); 

实际上会导致以下推送负载:

{
  "where": {
    "channels": {
      "$or": [
        {
          "channels": "channel1"
        },
        {
          "channels": "channel1_sub"
        }
      ]
    }
  },
  "data": {
    "alert": "test"
  }
}

结果是,如果用户订阅了两个频道 - 只会收到一个推送通知:)