C2DM实现PHP代码

我正在创建使用C2DM推送通知的Android应用程序。 但我在创建php代码时遇到问题,使用c2dm发送消息。 请指导我如何使用PHP代码发送消息。 实际上有一个问题,如何获得客户端身份validation令牌。 我已经看到了http://code.google.com/android/c2dm/index.html#serverurl,但根据这个我创建了Android应用程序,我也获得了注册ID,我也发送给用户,但如何服务器使用它来发送应用程序。

服务器从Android设备发送消息需要什么?

Solutions Collecting From Web of "C2DM实现PHP代码"

注册您自己的服务器系统并获得授权令牌(这是Cpt.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和我写的自定义组件。 它应该为您提供在PHP中处理Android C2DM实现所需的基本信息。

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”。

我在以下链接中find了相同的代码

需要专家的帮助。