2010-02-18 13 views
7

Próbuję dodać powiadomienia push do mojej aplikacji. Używam profilu ad hoc. Mój identyfikator aplikacji nie zawiera symbolu wieloznacznego. Używam następujący kod php ...Usługa powiadomień Apple Push Notification APNS - Powiadomienia nie nadchodzą

$deviceToken="****";masked 
$time = time(); 

$apnsHost = 'gateway.sandbox.push.apple.com'; 

$apnsPort = 2195; 
$apnsCert = 'apns-dev-maui.pem'; 

$streamContext = stream_context_create(); 
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); 

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext); 
if($apns) 
{ 
echo "Connection Established<br/>"; 
$payload = array(); 
$payload['aps'] = array('alert' => 'It works!!', 'badge' => 1, 'sound' => 'default'); 
$payload = json_encode($payload); 
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload; 

     print "sending message :" . $apnsMessage . "<br/>"; 
     print "sending payload :" . $payload . "<br/>"; 
     fwrite($apns, $apnsMessage); 

} 
else 
{  
     echo "Connection Failed"; 
     echo $errorString; 
     echo $error; 
} 
// socket_close($apns); 
fclose($apns); 

Brak połączenia błędy są generowane. Nic nie wydaje się pochodzić z kanału zwrotnego.

Dostałem deviceTokens z konsoli organizera i polecenia NSLog. Powiadomienia dla tej aplikacji są wyświetlane w menu ustawień.

Mam ATT 3G i stare 2G, które używam jako iPod. Ani praca.

Bez zbędnych błędów, nie mam pomysłów. Ktoś ma jakiś wgląd?

Jennifer

+0

Czy możemy użyć dwóch różnych plików .pem (plików certyfikatów) do wysyłania powiadomień wypychanych? Czy to jest możliwe? –

Odpowiedz

24

W końcu to rozgryzłem. Używałem Sandbox z profilem administracyjnym AdHoc. Ad Hoc najwyraźniej uważa się za produkcję, a nie za rozwój. Stworzyłem certyfikat produkcji wypychanej, zainstalowałem go i voila! To działa.

+1

Dzięki. Chciało się całkowicie zbzikować! :) –

+1

Mupy możesz oznaczyć własną odpowiedź jako poprawną i naprawdę powinno w tym przypadku :) – powerj1984

6

Odpowiedź Mupsa jest właściwa. Chciałem dodać sytuację dodawania, która miała ten sam problem (na wypadek, gdyby była pomocna dla kogokolwiek innego). Miałem ustawienia push i pracowało dokładnie na 1 iphone (nie na innych). To było bardzo zagadkowe. Problem polegał na tym, że 1 iphone, który działał, miał "debugowaną" wersję zainstalowanego programu, gdzie inni mieli zainstalowaną wersję "ad hoc". Nasz serwer APNS został skonfigurowany do używania certyfikatu "rozwój" i gateway.sandbox.push.apple.com

Zmieniłem certyfikat na serwerze na certyfikat "produkcyjny", a host na gateway.push.apple.com

(wówczas usunięte wszystkie profile udostępniania na wszystkich urządzeniach, a zainstalowane ad hoc wersji programu)

i byliśmy dobrze iść.

Powiązane problemy