如何推送到列表中的频道,而不重复
how to push to channel which is in list, without duplicate
我在发送推送通知时遇到 PARSE 查询 "OR" 的问题
tldr:我希望能够推送通知所有订阅了 2 个频道之一的用户 - 使用 OR - 这样每个用户(即使订阅了 2 个频道)也只会收到一个通知。
例如:我有以下频道:
channel1
channel1_sub
想象一个订阅了 channel1
和 channel1_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"
}
}
结果是,如果用户订阅了两个频道 - 只会收到一个推送通知:)
我在发送推送通知时遇到 PARSE 查询 "OR" 的问题
tldr:我希望能够推送通知所有订阅了 2 个频道之一的用户 - 使用 OR - 这样每个用户(即使订阅了 2 个频道)也只会收到一个通知。
例如:我有以下频道:
channel1
channel1_sub
想象一个订阅了 channel1
和 channel1_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"
}
}
结果是,如果用户订阅了两个频道 - 只会收到一个推送通知:)