C2DM implementation PHP code

后端 未结 5 1056
庸人自扰
庸人自扰 2020-11-28 05:21

I am creating the Android application where C2DM push notification is used. But i have a problem in creating the php code to use c2dm for sending messages. please guide me h

相关标签:
5条回答
  • 2020-11-28 05:30

    Check this out: http://www.toppa.com/2010/google-clientlogin-php-example/ Otherwise I will get back to you, as I will try C2DM later this week.

    0 讨论(0)
  • 2020-11-28 05:31

    As C2DM has been officially deprecated (google c2dm)

    I recommend using the new GCM API as described in the following link: GCM Php implementation

    0 讨论(0)
  • 2020-11-28 05:35

    I have tried using the php code that was accepted as the correct answer but it is not working. I am getting the response http code as "0".

    I found the same code in the following link

    Need help from the experts out here.

    0 讨论(0)
  • 2020-11-28 05:37

    To register your own server system and obtain the Authorise Tokens (this is what Cpt. Ohlund proposed):

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

    To send a message to a phone:

    // $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;
            }
    
    0 讨论(0)
  • 2020-11-28 05:46

    I've created an example in my blog in working with Android C2DM. I use Zend Framework and a custom component that I wrote out. It should give you the basic information that you will need in order to handle your Android C2DM implementation in PHP.

    Android C2DM PHP w/ Zend Framework: http://blog.digitalstruct.com/2010/11/21/android-c2dm-with-php-and-zend-framework/

    Regards,

    Mike

    0 讨论(0)
提交回复
热议问题