简体   繁体   English

Android 通知推送 php 错误

[英]Android Notifications push php error

i am trying to send a notification push to an user, but there is no way to complete that,我正在尝试向用户发送通知推送,但无法完成,

There is the code i use in php有我在 php 中使用的代码

    $message = new gcm(); 
    $message->sendMessageToPhone(2, $message,$valor);

    class gcm 
    { 
    function sendMessageToPhone($collapseKey, $messageText, $gcmcode)  
{           
         $apiKey = 'there is my apikey';  
         $headers = array('Authorization:key=' . $apiKey); 
         $data = array(      'registration_id' => $gcmcode,      'collapse_key' => $collapseKey,      'data.message' => $messageText);
         $ch = curl_init(); 
         curl_setopt($ch, CURLOPT_URL, "https://android.googleapis.com/gcm/send"); 
         if ($headers)     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
         curl_setopt($ch, CURLOPT_POST, true); 
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
         $response = curl_exec($ch);  
         $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
         if (curl_errno($ch)) {     return 'fail';    }    
         if ($httpCode != 200) {     return 'status code 200';    }  
         curl_close($ch);   
         return $response;      
}

and i get that error when i execute the php当我执行 php 时出现该错误

Catchable fatal error: Object of class gcm could not be converted to string in /path/gcm.php on line 25可捕获的致命错误:第 25 行的 /path/gcm.php 中的类 gcm 的对象无法转换为字符串

Line 25 = curl_setopt($ch, CURLOPT_POSTFIELDS, $data);第 25 行 = curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

Hi friend I had to develop a push notification part for some bundle on Symfony 2.x only use the Class and change the namespaces, add you key, I hope it's help you.嗨,朋友,我不得不为 Symfony 2.x 上的某个包开发推送通知部分,仅使用 Class 并更改名称空间,添加您的密钥,希望对您有所帮助。 and i'm sorry for my bad english.我很抱歉我的英语不好。

Remember that the Id of the device has to be registered in the Cloud.请记住,设备的 ID 必须在云中注册。

from controller:从控制器:

    /*
     * Google API Key
     */
    define("GOOGLE_API_KEY", "xxxxxxxxxxxxxx"); // Place your Google API Key
    $gcm = new \MessageBundle\Classes\GCM();

    $message = "Hello";
$registatoin_ids = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$gcm->send_notification($registatoin_ids, $message);

The class:班上:

    <?php


/**
 * GCM
 *
 * @author Esteban lopez
 */
class GCM {


    // constructor
    function __construct() {

    }

    /**
     * Sending Push Notification
     */
    public function send_notification($registatoin_ids, $message) {

        // Set POST variables
        $url = 'https://android.googleapis.com/gcm/send';

        $fields = array(
            'registration_ids' => $registatoin_ids,
            'data' => $message,
        );

        $headers = array(
            'Authorization: key=' . GOOGLE_API_KEY,
            'Content-Type: application/json'
        );
        // Open connection
        $ch = curl_init();

        // Set the url, number of POST vars, POST data
        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        // Disabling SSL Certificate support temporarly
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

        // Execute post
        $result = curl_exec($ch);
        if ($result === FALSE) {
            die('Curl failed: ' . curl_error($ch));
        }

        // Close connection
        curl_close($ch);
       // echo $result;
    }

}

You are missing the constructor of gcm.您缺少 gcm 的构造函数。 Add the following lines to your php inside class gcm将以下行添加到您的 php 类 gcm 中

function __construct() {

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM