Push-уведомление с использованием библиотеки C# Push Sharp не работает на производственном сервере

После того, как сертификат сгенерирован, я только экспортировал закрытый ключ (без сертификата) в доступе Цепочки для ключей, экспортировал как.p12 и использовал файл, и это не работало. Я экспортировал только сертификат и экспортировал как.p12 и использовал файл, и он также не работал.

Исключение составляет:

Вы выбрали производственный сервер, но ваш сертификат не является производственным сертификатом! Пожалуйста, проверьте, чтобы убедиться, что у вас есть правильный сертификат!

Если я использую тот же.p12 с библиотекой MoonAPNS, он работает нормально, но не с библиотекой PUSHSHarp. Я использую Push Sharp только для тихих уведомлений.

1 ответ

Решение

Apple представила новый унифицированный сертификат push-уведомлений, который действителен как для песочницы, так и для производственных серверов. Этот новый сертификат немного отличается от имени субъекта (раньше он содержал Apple Push IOS Push Services или Apple Development IOS Push Services, а теперь он содержит Apple Push Services).

PushSharp 2.x не знает об этом новом формате и все еще ожидает, что старые имена субъектов будут проверены, поэтому он считает ваш сертификат недействительным.

Рекомендуется использовать PushSharp 3.x (предварительная версия доступна на NuGet), и он правильно проверяет новый тип сертификата. Я бы порекомендовал обновиться до версии 3.x (конечно, в этом есть некоторые критические изменения API).

Если вы по-прежнему настаиваете на использовании PushSharp 2.x, вы можете отменить проверку сертификата, установив disableCertificateCheck параметр для true в ApplePushChannelSettings конструктор класса.

Другие вопросы по тегам