Czy ktoś może wyjaśnić, co APN (Apple Push Notification) chce, o ile zapytasz?Technika PHP do wysyłania zapytań do serwera opinii APN
Dokumenty mówią, że rozpoczyna wysyłanie zaraz po nawiązaniu połączenia. Czy to oznacza, że nie robię na nim fread()
?
Oto mój obecny kod, aby spróbować go przeczytać. NIE umieściłem fread()
w pętli, ponieważ nie wiem, co oznacza odpowiedź "nie więcej rekordów do odczytu" i nie chciałem nieskończonej pętli na moim serwerze.
<?php
$apnsCert = 'HOHRO-prod.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'verify_peer', false);
$apns = stream_socket_client('ssl://feedback.push.apple.com:2196', $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);
echo 'error=' . $error;
echo 'errorString=' . $errorString;
$result = fread($apns, 38);
echo 'result=' . $result;
fclose($apns);
?>
Do tej pory wszystko, co otrzymuję, jest zerową odpowiedzią. Nie ma błędów, więc jest połączenie.
Nie wiem, czy odpowiedź zerowa oznacza brak danych, czy mój fread()
jest niewłaściwy sposób to zrobić.
Dzięki
Dziś odkryłem, że fread() nie będzie działać, ponieważ APN zwrotne wysyła dane na śmieci do rzeczywistej informacji zwrotnej. To powoduje, że fread się nie powiedzie, ponieważ odczytuje puste dane. Jak wspomnia o gw1921, musisz włączyć pętlę feof(), aż do strlen (fread ($ apns, 38)). Od tego momentu otrzymasz prawidłową informację zwrotną. Następnie rozpakuj dane, tak jak sugerował Nick B poniżej. (Kolejny paskudny błąd: odinstalowana aplikacja nie będzie generować informacji zwrotnej, chyba że masz inną aplikację na urządzeniu z tym samym środowiskiem aplikacji, więc potrzebujesz 2 aplikacji piaskownicy obsługujących naciśnięcie przycisku w urządzeniu, aby odinstalować jedną z nich.) – brack
Nawet mam podobny kod i ja też dostaję zerowy od strachu. Nie jestem pewien, czy mój kod działa, a APNS wysyła NULL odpowiedź lub po prostu czegoś brakuje. Jestem pewien, że moje połączenie z APNS zakończyło się sukcesem. Zainstalowałem moją aplikację na około 5-10 urządzeniach i wysłałem kilka alertów, a następnie odinstalowałem aplikację z kilku i ponownie wysłałem ostrzeżenia, aby serwer opinii APNS dał nam znać, że nie udało się dostarczyć na kilku urządzeniach. Nie mam nic innego niż puste w fiddle() :-(Jeśli zrobiłeś coś innego i sprawiłeś, że działaj, proszę daj mi znać – Anish
Czy użyłeś "pushutil"? Kiedy to odkryjesz, jest to szybszy sposób aby sprawdzić serwer opinii To narzędzie Mac OS X, które kompilujesz, a następnie uruchamiasz z wiersza poleceń Uniksa Google Erica Sadun - jest na swojej stronie pod Push. –