Недопустимая длина DeviceToken при отправке push-сообщения Pushkharp
Я пытаюсь использовать PushSharp в проекте, связанном с Apple passkit.
Моя текущая проблема касается pushkit push.
Когда я пытаюсь создать свое уведомление, он говорит
Недопустимая длина токена устройства (точное сообщение об ошибке: недопустимая длина DeviceToken.
var notif = new ApnsNotification(token, payload);
Когда я регистрирую новый купон passkit, его токена равна 32. Кажется, это нормально для меня.
В чем проблема? Поддерживает ли PushSharp passkit вообще? Как я вижу, некоторые люди использовали его, но я не мог найти никакой официальной информации об этом.
Обратите внимание: я знаю PushSharp, поскольку я использую его для отправки сообщений Normal push, он работал годами без каких-либо проблем для меня. Мой вопрос связан с нажатиями, связанными с passkit.
Большое спасибо!
ИЗМЕНИТЬ
После изменения кода по предложениям Baris Akar проблема исправлена, но появляется еще одна:
Apple Notification Failed: ID=1, Code=ConnectionError
2016-11-18 11: 07: 22.de. [INFO] Остановка: ожидание задач 2016-11-18 11: 07: 22.de. [INFO] Ожидание всех задач 1 2016-11-18 11: 07: 22.de. [INFO] APNS-Client [1]: отправка идентификатора партии = 1, счет = 1 2016-11-18 11: 07: 22.de. [INFO] APNS-Client [1]: отправлен пакет, ожидающий ответа... Apple Notification Failed: ID = 1, Код = ConnectionError 2016-11-18 11: 07: 22.de. [INFO] Все задачи Закончено 2016-11-18 11: 07: 22.de. [INFO] Passed WhenAll 2016-11-18 11: 07: 22.de. [INFO] Брокер IsCompleted 2016-11-18 11: 07: 22.de. [ОТЛАЖИВАТЬ] Брокерская задача завершена 2016-11-18 11: 07: 22.de. [INFO] Остановка: выполнено Ожидание задач 2016-11-18 11: 07: 22.de. [INFO] APNS-Client [1]: Выполнено Чтение для пакетного идентификатора = 1, реселлерный пакетный таймер...
Ответы
Ответ 1
Похоже, что в более старая версия она бы сработала следующим образом:
var n = new AppleNotification().WithPasskitUpdate();
Функция WithPasskitUpdate()
больше недоступна, но это должно быть эквивалентно:
var notif = new ApnsNotification();
notif.DeviceToken = token;
notif.Payload = payload;
Не тестировал его, но после проверки кода он может работать. В основном вы обходите nofollow noreferrer → проверку длины токена в конструкторе ApnsNotification
(что, вероятно, должно быть исправлено, если токен меньше для passkit отталкивает).
Также убедитесь, что вы используете правильный сертификат (который, похоже, отличается от сертификата для регулярных push-уведомлений), и используйте производственные настройки, поскольку, похоже, нет среды с песочницей для сберегательной книги (см. этот ответ).
Кроме того, вам нужно передать false
для параметра validateIsApnsCertificate
конструктора ApnsConfiguration
, так как есть проверка сертификата, который не обрабатывает сертификат pushkit.
var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, certificateFile, certificateFilePwd, false);