2016-11-14 19 views
12

Próbuję użyć PushSharp w projekcie powiązanym z passkitem Apple.Nieprawidłowa długość DeviceToken przy wysyłaniu passkit push PushSharp

Mój obecny problem dotyczy passkitów.

Kiedy próbuję tworzyć moje zgłoszenie, to mówi długość tokent

urządzenia jest nieprawidłowa (dokładna wiadomość wyjątek. Nieprawidłowy DeviceToken Długość

var notif = new ApnsNotification(token, payload); 

Kiedy zarejestrować nową passkit kupon , jego długość token wynosi 32. Wydaje mi się ok.

Co powinno być problemem? Czy PushSharp obsługuje passkit w ogóle? Jak widzę, niektórzy ludzie Ed, ale nie mogłem znaleźć żadnych informacji na ten temat.

Proszę zauważyć, wiem, że PushSharp, jak używam go do wysyłania wiadomości Normalny, działa od lat bez żadnego problemu dla mnie. Moje pytanie dotyczy pism związanych z passkitem.

Dziękuję bardzo!

EDIT

Po zmianie kodu przez sugestie BARIS Akar za problem został rozwiązany, ale inny przychodzi:

Apple Notification Failed: ID=1, Code=ConnectionError

2016-11-18 11:07:22 .de. [INFO] Zatrzymywanie: Oczekiwanie na zadania 2016-11-18 11: 07: 22.de. [INFO] Oczekiwanie na wszystkie zadania 1 2016-11-18 11: 07: 22.de. [INFO] Klient APNS [1]: Wysyłanie identyfikatora partii = 1, policzenie = 1 2016-11-18 11: 07: 22.de. [INFO] Klient APNS [1]: Wysłana partia, czekająca na możliwą odpowiedź ... Powiadomienie Apple nie powiodło się: ID = 1, Kod = ConnectionError 2016-11-18 11: 07: 22.de. [INFO] Wszystkie zadania Zakończone 2016-11-18 11: 07: 22.de. [INFO] Przekazano, gdy tylko 2016-11-18 11: 07: 22.de. [INFO] Broker zostaje ukończony 2016-11-18 11: 07: 22.de. [DEBUG] Broker Zadanie zakończone 2016-11-18 11: 07: 22.de. [INFO] Zatrzymywanie: gotowe Oczekiwanie na zadania 2016-11-18 11: 07: 22.de. [INFO] APNS-Client [1]: Gotowe Czytanie dla Batch ID = 1, resetowanie czasomierza wsadowy ...

+2

Czy już rzucił okiem na [ten problem] (https://github.com/Redth/PushSharp/issues/771)? – dymanoid

Odpowiedz

8

W Wygląda na an older version, by to działało tak:

var n = new AppleNotification().WithPasskitUpdate(); 

funkcja WithPasskitUpdate() nie jest już dostępny, ale to powinno być równoważne:

var notif = new ApnsNotification(); 
notif.DeviceToken = token; 
notif.Payload = payload; 

nie testowałem, ale po sprawdzeniu kodu, to może działać. Zasadniczo omijasz w ten sposób kod token length check in the ApnsNotification constructor (który powinien zostać prawdopodobnie naprawiony, jeśli token jest mniejszy dla naciśnięć passkitów).

Upewnij się również, że używasz odpowiedniego certyfikatu (który wydaje się być inny niż certyfikat dla zwykłych powiadomień push) i korzystaj z ustawień produkcyjnych, ponieważ wydaje się, że nie ma środowiska piaskownicy dla książeczki oszczędnościowej (patrz this answer).

Ponadto należy podać false dla parametru validateIsApnsCertificate konstruktora ApnsConfiguration, ponieważ istnieje certyfikat dla certyfikatu, który nie obsługuje certyfikatu Pushkit.

var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, certificateFile, certificateFilePwd, false); 
+0

Upewnij się również, że korzystasz z odpowiedniego certyfikatu (który wydaje się być inny niż certyfikat dla zwykłych powiadomień push) i przetestuj to na certyfikacie produkcyjnym, ponieważ wydaje się, że nie ma środowiska piaskownicy dla książki (patrz [ta odpowiedź] (http: ///stackoverflow.com/a/30493091/594074)). –

+0

Dzięki chłopaki! Wypróbuję twój kod, a certyfikat jest OK, jest w 100%. – Tom

+0

Próbowałem, naprawił ten problem, ale inny występuje. Pls. sprawdź moje aktualizacje w moim pytaniu. Wielkie dzięki! – Tom