GCM with PHP (Google Cloud Messaging)

后端 未结 13 1776
轮回少年
轮回少年 2020-11-22 04:48

Update: GCM is deprecated, use FCM

How can I integrate the new Google Cloud Messaging in a PHP backend?

13条回答
  •  半阙折子戏
    2020-11-22 05:06

    This code will send a GCM message to multiple registration IDs via PHP CURL.

    // Payload data you want to send to Android device(s)
    // (it will be accessible via intent extras)    
    $data = array('message' => 'Hello World!');
    
    // The recipient registration tokens for this notification
    // https://developer.android.com/google/gcm/    
    $ids = array('abc', 'def');
    
    // Send push notification via Google Cloud Messaging
    sendPushNotification($data, $ids);
    
    function sendPushNotification($data, $ids) {
        // Insert real GCM API key from the Google APIs Console
        // https://code.google.com/apis/console/        
        $apiKey = 'abc';
    
        // Set POST request body
        $post = array(
                        'registration_ids'  => $ids,
                        'data'              => $data,
                     );
    
        // Set CURL request headers 
        $headers = array( 
                            'Authorization: key=' . $apiKey,
                            'Content-Type: application/json'
                        );
    
        // Initialize curl handle       
        $ch = curl_init();
    
        // Set URL to GCM push endpoint     
        curl_setopt($ch, CURLOPT_URL, 'https://gcm-http.googleapis.com/gcm/send');
    
        // Set request method to POST       
        curl_setopt($ch, CURLOPT_POST, true);
    
        // Set custom request headers       
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
        // Get the response back as string instead of printing it       
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
        // Set JSON post data
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));
    
        // Actually send the request    
        $result = curl_exec($ch);
    
        // Handle errors
        if (curl_errno($ch)) {
            echo 'GCM error: ' . curl_error($ch);
        }
    
        // Close curl handle
        curl_close($ch);
    
        // Debug GCM response       
        echo $result;
    }
    

提交回复
热议问题