如何使用 Parse Server 和 PHP 发送推送通知

Posted

技术标签:

【中文标题】如何使用 Parse Server 和 PHP 发送推送通知【英文标题】:How to send a push notification using Parse Server and PHP 【发布时间】:2017-05-04 22:01:15 【问题描述】:

我整天都在努力让它工作,但没有运气。这就是我得到的结果......

 <?php  
 $url = 'http://parse.verbomedia.com:1337/parse/push';  
 $appId = '******';  
 $masterKey = '******';  
 $headers = array(  
   "Content-Type: application/json",  
   "X-Parse-Application-Id: " . $appId,  
   "X-Parse-Master-Key: " . $masterKey
 );  
 $objectData = '"where":"deviceType":"ios","data":"alert":"Hello, Parse!"';  
 $rest = curl_init();  
 curl_setopt($rest,CURLOPT_URL,$url);  
 curl_setopt($rest,CURLOPT_POST,1);  
 curl_setopt($rest,CURLOPT_POSTFIELDS,$objectData);  
 curl_setopt($rest,CURLOPT_HTTPHEADER,$headers);  
 curl_setopt($rest,CURLOPT_SSL_VERIFYPEER, false);  
 curl_setopt($rest,CURLOPT_RETURNTRANSFER, true);  
 $response = curl_exec($rest);  
 echo $response;  
 print_r($response);  
 curl_close($rest);  
 ?>  

通过 Parse Dashboard 可以正常工作。

关于我可能做错了什么有什么想法吗?

【问题讨论】:

有一个现成的 php 库 - 为什么要自己构建? 嗨@Philipp,我刚才在看它,但我不需要整个SDK,只是一种简单的方式来传递推送通知。 【参考方案1】:

php sdk 目前支持通过ParsePush 类进行客户端推送。以下是从 php sdk 的 github 页面上README.md 中的示例提取的。

// Push to Channels
ParsePush::send(array(
    "channels" => ["PHPFans"],
    "data" => $data
), true);

// note the master key is required via 'true'

您也可以在 docs 中找到此 sdk 的其他示例和说明。

请注意,尽管 php sdk 支持这一点,但您必须首先在您的解析服务器实例中设置working push configuration。虽然 php sdk 可以开箱即用,但如果没有事先正确设置,服务器将无法处理通过 GCM 或 APNS 推送通知。

【讨论】:

【参考方案2】:

解析服务器 (Read here) 不支持客户端推送,因此为了发送推送通知,您必须执行以下操作:

    创建一个将利用 parse js SDK 的云代码函数。在那里,您需要编写几行代码来将推送发送到特定客户端 (Read here

    将相关参数发送到您触发的云代码函数,通过解析PHP SDK触发您的PHP代码中的云代码函数

【讨论】:

以上是关于如何使用 Parse Server 和 PHP 发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 php parse-server sdk 将 ParseQuery::orQueries 与 matchQuery 结合起来

CodeIgniter 和 Parse Server 的 database.php 设置

如何使用 iptables 和 parse-server (Parse Server) 将 HTTP 重定向到 HTTPs

带有 Where 子句 PHP 的 Parse Server 的 GET api

如何使用 New Relic 跟踪 Parse Server 的类名?

parse-server:如何区分用户类 BeforeSave 中的 signUp 和常规 ParseUser.save?