2016-03-03 7 views
6

starałem się wdrożyć Google Cloud Messaging (GCM) dla iOS w mojej aplikacji. Próbowałem kody przewidziane na podGcmExampleXcode Project i napisał PHP skrypt wyśle ​​żądanie poprzez PHP cURL.Wynik InternalServerError w wysyłaniu zdalnego powiadamiania Prześlij na iOS z wykorzystaniem GCM w PHP

Moja PHP kod jest w następujący sposób:

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

Żądanie jest udany, jednak wynik z serwera Google GCM zawiera następujące elementy:

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

To t tutaj coś nie tak z kluczem Google API ? Próbowałem tego skryptu, aby wysłać zdalne powiadomienie do GcmExample.xcworkspace i zadziałało. Chciałbym wiedzieć, jak rozwiązać ten problem.

Odpowiedz

8

Jeśli pojawi się komunikat o błędzie w GCM dla iOS{"error":"InternalServerError"}, upewnij się, przesłanych prawidłowego certyfikatu P12 w Google Konsola programisty. A Upewnij się, że Provisioning Profile jest ustawiony prawidłowo na podpisania certyfikatu i ustawić następujące następująco:

  • na rozwój:

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

  • Do produkcji/dystrybucji jonowy:

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

1

Podobny problem dotyczy grup android-gcm. Wygląda na to, że problem pochodzi z używanego certyfikatu. Inni członkowie na grupie rozwiązany przesyłając nowe certyfikaty

+0

@adjuremonds Próbowałem już co na Android GCM grup zostały zasugerowane, jednak żaden z nich nie działa. –

+0

Dzięki. Odnowiono certyfikaty powiadomień push systemu iOS i zadziałało. – atulkhatri

Powiązane problemy