Недопустимая длина 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);