Я создаю приложение для Android, в котором используется уведомление C2DM push. Но у меня проблема с созданием PHP-кода для использования c2dm для отправки сообщений. пожалуйста, расскажите мне, как использовать php-код для отправки сообщений. На самом деле существует проблема, связанная с этим, как получить токен клиента. Я видел URL http://code.google.com/android/c2dm/index.html#server, но в соответствии с этим я создал приложение для Android, и я получил идентификатор регистрации, и я также отправляю пользователю, но как сервер использует это для отправки приложения.
есть ли что-нибудь, что необходимо для сервера с устройства Android для отправки сообщений ?.
Чтобы зарегистрировать свою собственную серверную систему и получить авторизованные токены (это то, что предложил Cp. Ohlund):
function googleAuthenticate($username, $password, $source="Company-AppName-Version", $service="ac2dm") { session_start(); if( isset($_SESSION['google_auth_id']) && $_SESSION['google_auth_id'] != null) return $_SESSION['google_auth_id']; // get an authorization token $ch = curl_init(); if(!ch){ return false; } curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin"); $post_fields = "accountType=" . urlencode('HOSTED_OR_GOOGLE') . "&Email=" . urlencode($username) . "&Passwd=" . urlencode($password) . "&source=" . urlencode($source) . "&service=" . urlencode($service); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // for debugging the request //curl_setopt($ch, CURLINFO_HEADER_OUT, true); // for debugging the request $response = curl_exec($ch); //var_dump(curl_getinfo($ch)); //for debugging the request //var_dump($response); curl_close($ch); if (strpos($response, '200 OK') === false) { return false; } // find the auth code preg_match("/(Auth=)([\w|-]+)/", $response, $matches); if (!$matches[2]) { return false; } $_SESSION['google_auth_id'] = $matches[2]; return $matches[2]; }
Чтобы отправить сообщение на телефон:
// $msgType: all messages with same type may be "collapsed": if multiple are sent, // only the last will be received by phone. function sendMessageToPhone($authCode, $deviceRegistrationId, $msgType, $messageText) { $headers = array('Authorization: GoogleLogin auth=' . $authCode); $data = array( 'registration_id' => $deviceRegistrationId, 'collapse_key' => $msgType, 'data.message' => $messageText //TODO Add more params with just simple data instead ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://android.apis.google.com/c2dm/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); curl_close($ch); return $response; }
Я создал пример в своем блоге в работе с Android C2DM. Я использую Zend Framework и пользовательский компонент, который я написал. Он должен предоставить вам основную информацию, которая вам понадобится для обработки вашей реализации Android C2DM в PHP.
Android C2DM PHP w / Zend Framework: http://blog.digitalstruct.com/2010/11/21/android-c2dm-with-php-and-zend-framework/
С Уважением,
Майк
Проверьте это: http://www.toppa.com/2010/google-clientlogin-php-example/ В противном случае я вернусь к вам, так как я попробую C2DM позже на этой неделе.
Поскольку C2DM официально устарел ( google c2dm )
Я рекомендую использовать новый GCM API, как описано в следующей ссылке: реализация GCM Php
Я попытался использовать PHP-код, который был принят как правильный ответ, но он не работает. Я получаю HTTP-код ответа как «0».
Я нашел тот же код в следующей ссылке
Нужна помощь от экспертов здесь.