2013-05-08 16 views
1

我试图通知推送发送到用户,但是没有办法完成的是,Android的通知将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;  
} 

和我得到这个错误,当我执行的PHP

开捕致命错误:类GCM的对象无法在/path/gcm.php在线25

第25行= curl_setopt($ CH转换为字符串,CURLOPT_POSTFIELDS,$ data);

回答

1

嗨朋友我不得不为Symfony 2.x开发一些捆绑推送通知部分。只使用Class并更改名称空间,添加您的密钥,希望它对您有所帮助。我很抱歉我的英语不好。

请记住,设备的ID必须在云中注册。

从控制器:

/* 
    * 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); 

类:

<?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; 
    } 

} 
1

你缺少GCM的构造。在你的php里面增加以下几行gcm

function __construct() { 

}