Мое приложение только что готово к продаже в App Store, но ни одно из моих производственных устройств (устройств, которые установили приложение из App Store) не получает push-уведомления. Когда я пытаюсь отправить push-уведомление на производственное устройство, я получаю эту ошибку:
"The credentials supplied to the package were not recognized"
(System.ComponentModel.Win32Exception)
Это исключение внутренне бросается и попадает в бесконечный цикл:
Он вызывается в строке 539 файла ApplePushChannel.cs
:
try
{
stream.AuthenticateAsClient(this.appleSettings.Host, this.certificates,
System.Security.Authentication.SslProtocols.Ssl3, false);
//stream.AuthenticateAsClient(this.appleSettings.Host);
}
catch (System.Security.Authentication.AuthenticationException ex)
{
throw new ConnectionFailureException("SSL Stream Failed to Authenticate as Client", ex);
}
Это результат работы приложения на выходе Visual Studio:
...
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
A first chance exception of type 'System.ObjectDisposedException' occurred in System.dll
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
A first chance exception of type 'System.ObjectDisposedException' occurred in System.dll
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
A first chance exception of type 'System.ObjectDisposedException' occurred in System.dll
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
A first chance exception of type 'System.ObjectDisposedException' occurred in System.dll
A first chance exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll
...(it keeps getting thrown until I stop it manually)
Вот что я пробовал:
- Двойной проверял, что идентификатор устройства, который я пытаюсь, зарегистрирован с маркером производственного устройства.
- Отменил и обновил сертификат APNS Production, экспортировал его с закрытым ключом в новый файл
.p12
и снова попытался с новым сертификатом. (У меня была такая же проблема с уведомлениями о продвижении по службе, и это решило мою проблему) - Изменен протокол SSL от
Ssl3
доTls
. (несколько дней назад возникла проблема с версией протокола, и она временно устранила проблему. Для этого не должно быть необходимости, но ошибка, которую я получаю, такая же, как и та, которую я получал, перед которой это исправлено) - Проверено, что я на самом деле пытаюсь подключиться к производственному серверу с производственным сертификатом вместо сервера/сертификата разработки.
- Проверено, что я могу напрямую получить доступ к серверу APNS (мое приложение ASP.NET живет внутри Parallels VM Windows 8.1 на моем Mac, вот вывод с моего Mac, чтобы избежать путаницы:
(вывод терминала) Изменить: я пинговал сервер песочницы, я пинговал производственный сервер, я подтверждаю, что могу подключиться к нему тоже, так что это не проблема.
can$ sudo nmap -p 2195 gateway.sandbox.push.apple.com
Starting Nmap 6.40-2 ( http://nmap.org ) at 2014-04-28 00:06 EEST
Nmap scan report for gateway.sandbox.push.apple.com (17.149.34.189)
Host is up (0.49s latency).
Other addresses for gateway.sandbox.push.apple.com (not scanned): 17.149.34.187 17.149.34.188
PORT STATE SERVICE
2195/tcp open unknown
Почему PushSharp не будет вести переговоры с серверами APNS?