2016-03-03 9 views
6

ho cercato di implementare Google Cloud Messaging (GCM) periOS nella mia app. Ho provato i codici forniti sul podGcmExampleXcode Project e scritto uno script PHP la volontà inviare la richiesta via PHP cURL.Risultato di InternalServerError nell'inviare Push Notification remoto per iOS che utilizzano GCM in PHP

mio PHP codice è il seguente:

gcmPush(
    "kU6GAbdQEg0:APA91bGSF42WITzubJ9lwQ2qUqL4ETtZfQEOthazc4tP1CRhxx8tKSRChwgtFK37-kt7RjG2P_Ncj2bDOONpPVsYkjxCNi3NDhMNWSkJ7pnlR83jdbMJfOKlD1CPXCgAvZjbwpzdeiTa", 
    "This is only a test from GCM for iOS.", 
    "PHP test" 
    ); 

function gcmPush($GCM_regID, $message, $title) { 

    $GOOGLE_API_KEY = "AIzaSyAd8pw7_J8i-FPswnhUMkFCDHtufSCFFTc"; 
    $url = 'https://android.googleapis.com/gcm/send'; 

    $fields = array(
     'to' => $GCM_regID, 
     'notification' => array(
      'sound' => 'default', 
      'badge' => '1', 
      'body' => $message, 
      'title' => $title 
     ) 
    ); 

    $headers = array(
     'Authorization: key=' . $GOOGLE_API_KEY, 
     'Content-Type: application/json' 
    ); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

    $result = curl_exec($ch); 
    echo "\r\n"; 
    if ($result === FALSE) { 
     die('Failed: ' . curl_error($ch) . "\r\n"); 
    } else { 

     echo "Success\r\n"; 
    } 

    curl_close($ch); 
} 

La richiesta è riuscita, tuttavia il risultato dal server Google GCM contiene quanto segue:

{"multicast_id":6164898138439370127,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InternalServerError"}]}

È t qui qualcosa non va con la chiave dell'API di Google ? Ho provato questo script per inviare la notifica remota allo GcmExample.xcworkspace e ha funzionato. Mi piacerebbe sapere come risolvere questo problema.

risposta

8

Se il vostro incontro questo messaggio di errore in GCM per iOS{"error":"InternalServerError"}, Assicurarsi che hai caricato il corretto certificato P12 nel Google Console per gli sviluppatori. E assicurarsi che il profilo provisioning è configurato correttamente per il certificato di firma e impostare la seguente come segue:

  • For Development:

    @{kGGLInstanceIDRegisterAPNSOption:deviceToken, kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};

  • Per produzione/distribuzione ione:

    @{kGGLInstanceIDRegisterAPNSOption:deviceToken, kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};

1

Un problema simile è stato sollevato nei gruppi android-gcm. Sembra che il problema sia venuto dal certificato utilizzato. Altri membri sul gruppo risolto il problema caricando nuovi certificati

+0

@adjuremonds Ho già provato quello sui gruppi androide-GCM sono stati suggeriti, ma nessuno di loro opere. –

+0

Grazie. Rinnovato i certificati di notifica push di iOS e ha funzionato. – atulkhatri

Problemi correlati