"gcm notifications not receiving when app is in background mode in ios" Code Answer


I have added

 'content_available' => true,//to trigger when iOS app is in background
 'priority' => 'high',
 'notification' => $data,
 $data = array( 'message' => 'Hello World!', 'body' => 'Hello World!');

to your code. Please try below code;


// Payload data you want to send to iOSdevice(s)
// (it will be accessible via intent extras)    
$data = array( 'message' => 'Hello World!', 'body' => 'Hello World!');

// The recipient registration tokens for this notification
// http://developer.android.com/google/gcm/ 
$ids = array( 'kucy6xoUmx********eeRsla' );

// Send a GCM push
sendGoogleCloudMessage(  $data, $ids );

function sendGoogleCloudMessage( $data, $ids )
    // Insert real GCM API key from Google APIs Console
    // https://code.google.com/apis/console/        
    $apiKey = 'AIz******9JA';

    // Define URL to GCM endpoint
    $url = 'https://gcm-http.googleapis.com/gcm/send';

    // Set GCM post variables (device IDs and push payload)     
    $post = array(
                    'registration_ids'  => $ids,
                    'data'              => $data, 
                    'content_available'    => true,                 
                    'priority'              => 'high',    
                    'notification' => $data,               

    // Set CURL request headers (authentication and type)       
    $headers = array( 
                        'Authorization: key=' . $apiKey,
                        'Content-Type: application/json'

    // Initialize curl handle       
    $ch = curl_init();

    // Set URL to GCM endpoint      
    curl_setopt( $ch, CURLOPT_URL, $url );

    // Set request method to POST       
    curl_setopt( $ch, CURLOPT_POST, true );

    // Set our custom 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 push   
    $result = curl_exec( $ch );

    // Error handling
    if ( curl_errno( $ch ) )
        echo 'GCM error: ' . curl_error( $ch );

    // Close curl handle
    curl_close( $ch );

    // Debug GCM response       
    echo $result;


on IOS side; Follow orders on GCM Site

EDIT 1: You may try sending notification for ios;

I edited your php code above; Changes are;

'notification' => $data,


$data = array( 'message' => 'Hello World!', 'body' => 'Hello World!');

By Zach Sugano on October 7 2022

Answers related to “gcm notifications not receiving when app is in background mode in ios”

Only authorized users can answer the search term. Please sign in first, or register a free account.