【问题标题】:Sending push notification using parse using query使用查询解析发送推送通知
【发布时间】:2014-02-08 16:55:20
【问题描述】:

我想使用查询发送推送通知 例如

我有这个问题

    $ages = array(18,19,20,21)
    $parseQuery = new parseQuery('_User');
    $parseQuery->whereContainedIn('age', $ages);
    $result = $parseQuery->find();

我想向他们发送推送通知 我应该使用安装还是有其他方法? 谢谢

更新:

我正在使用这个 SDK https://github.com/apotropaic/parse.com-php-library

从我要返回的代码中我将向他们发送通知的人员列表 我想将推送通知发送到 _User 类

【问题讨论】:

  • parseQuery 与解析无关,是吗?但是parse.com作为标签存在。
  • 这只是一个查询,它返回所有 18、19、20 或 21 岁的用户,我想向他们发送推送通知我正在使用这个 sdk github.com/apotropaic/parse.com-php-library
  • 危险,请在下面查看我的更新答案。我已经修改了代码。

标签: php push parse-platform


【解决方案1】:

您似乎正在使用parseQuery 检索具有您指定的年龄限制的用户。根据文档,一旦您在 $result 中获得了用户数据,就可以使用 curl 发送推送通知。

这是我在网上找到的一些代码,将其应用于您现有的代码以向您检索到的用户发送推送通知应该很简单。

<?php

$APPLICATION_ID = "xxxxxxxx";
$REST_API_KEY = "xxxxxxxxx";
$MESSAGE = "your-alert-message";

$url = 'https://api.parse.com/1/push';
$data = array(
    'channel' => '',
    'type' => 'android',
    'expiry' => 1451606400,
    'where' => array(
      'age' => array('$in' => array(18,19,20,21))
    ),
    'data' => array(
        'alert' => 'greetings programs',
    ),
);
$_data = json_encode($data);
$headers = array(
    'X-Parse-Application-Id: ' . $APPLICATION_ID,
    'X-Parse-REST-API-Key: ' . $REST_API_KEY,
    'Content-Type: application/json',
    'Content-Length: ' . strlen($_data),
);

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $_data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_exec($curl);

值得注意的是,您需要 php-curl 才能使其工作。如果您还没有,很容易install or enable。或者,如果您想使用开箱即用的东西,您可以使用 file_get_contents 来实现相同的目标。

编辑:我已经使用您在问题中定义的约束更新了$data 数组。您无需使用 parseQuery 来查找具有更新代码的用户。您实际上是在告诉 Parse 通过调用应用约束。

更新 2:我尚未测试此代码,但该库使如何在 README 中进行设置变得非常简单。该库只是在下面使用 curl,因此您可以使用更方便的方式。

$parse = new parsePush('Sample push message');
$parse->where = array(
  'age' => array('$in' => array(18,19,20,21))
);
//create acl
$parse->ACL = array("*" => array("write" => true, "read" => true));
$r = $parse->send();

【讨论】:

  • 没有地方可以告诉推送通知将其发送到 $result。您添加的代码将发送给所有用户
  • 好的,我已更新 $data 以接受您在问题中指定的 where 字段。现在可以试试了吗?
  • 危险,我已经更新了答案。请检查我的新代码
  • 感谢史蒂夫的回答,我希望使用 sdk 而不是 curl
  • 我再次更新了代码,但我认为你至少应该支持这个答案或将其标记为答案,因为它实现了你想要做的事情(以一种或另一种方式)。如果您有具体问题,我可以为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
相关资源
最近更新 更多