Я работаю над сервисом push-уведомления для Android и следую инструкциям для этого. Я попытался реализовать технику в localhost и преуспеть. Но пока я пытался с моим удаленным сервером, он выдавал мне ошибку «Curl failed: Не удалось подключиться к: Permission denied». Я не знаю, в чем проблема. Я пытался найти решение, но не работало. Вот как я это сделал.
Я создал базу данных под названием GCM для облачных сообщений. Добавлена следующая строка кода на странице publish_content.php.
$username = "given"; $password = "given"; $hostname = "localhost"; //connection to the database $dbhandle = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL"); // echo "Connected to MySQL<br>"; //select a database to work with $selected = mysql_select_db("gcm",$dbhandle) or die("Could not select examples"); //execute the SQL query and return records $result = mysql_query("SELECT gcm_regid FROM gcm_users"); $regIds = array(); include_once 'GCM.php'; //fetch tha data from the database while ($row = mysql_fetch_array($result)) { array_push($regIds, $row['gcm_regid']); } foreach($regIds as $item) { $gcm = new GCM(); $registatoin_ids = array($item); $message = array("price" => $message1); $result = $gcm->send_notification($registatoin_ids, $message); } //close the connection mysql_close($dbhandle);
GCM.php
<?php class GCM { //put your code here // constructor function __construct() { } /** * Sending Push Notification */ public function send_notification($registatoin_ids, $message) { // include config include_once './config.php'; // 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; } } ?>
Он подключается к mysql, и после этого он показывает эту ошибку. Пожалуйста помоги мне с этим.
Вы должны указать ключ API (полученный из вашего проекта API Google) в заголовках HTTP-запроса:
Authorization: key=YOUR_API_KEY
Это то, что разрешает вам отправлять сообщение GCM с вашего сервера в ваше приложение.
EDIT, теперь, когда вы добавили код GCM.php
:
Почему вы отключите SSL?
// Временное отключение поддержки SSL-сертификата
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);
Я не знаю PHP, но я не вижу эту строку в других примерах GCM GCM, таких как это .
И где вы определяете GOOGLE_API_KEY
?