PHP-код реализации C2DM


Я создаю приложение для Android, в котором используется push-уведомление C2DM. Но у меня проблема с созданием php-кода для использования c2dm для отправки сообщений. пожалуйста, объясните мне, как использовать php-код для отправки сообщений. На самом деле существует проблема, связанная с тем, как получить токен аутентификации клиента. Я видел http://code.google.com/android/c2dm/index.html#server url, но в соответствии с этим я создал приложение для Android, и я также получил идентификатор регистрации, и я также отправьте пользователю, но как сервер использует это для отправки приложения.

Есть ли что-нибудь необходимое для сервера с устройства Android для отправки сообщений?.

Author: Josh Clemm, 2010-11-08

5 answers

Для регистрации вашей собственной серверной системы и получения токенов авторизации (это то, что Cpt. Олунд предложил):

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;
        }
 45
Author: Yar, 2012-06-01 21:57:35

Я создал пример в своем блоге по работе с Android C2DM. Я использую Zend Framework и пользовательский компонент, который я написал. Он должен предоставить вам основную информацию, которая вам понадобится для обработки вашей реализации Android C2DM на PHP.

Android C2DM PHP с платформой Zend: http://blog.digitalstruct.com/2010/11/21/android-c2dm-with-php-and-zend-framework/

С уважением,

Майк

 7
Author: Mike Willbanks, 2010-11-21 21:27:06

Проверьте это: http://www.toppa.com/2010/google-clientlogin-php-example / В противном случае я свяжусь с вами, так как попробую C2DM позже на этой неделе.

 3
Author: Cpt.Ohlund, 2010-11-08 10:27:32

Поскольку C2DM официально устарел (google c2dm)

Я рекомендую использовать новый API GCM, как описано в следующей ссылке: Реализация Php GCM

 2
Author: eliav, 2017-05-23 11:58:30

Я пытался использовать php-код, который был принят в качестве правильного ответа, но он не работает. Я получаю ответный http-код как "0".

Я нашел тот же код в по следующей ссылке

Нужна помощь здешних экспертов.

 0
Author: user703555, 2015-05-11 05:52:26