Produção PushSharp APNS: as credenciais fornecidas ao pacote não foram reconhecidas (embora o desenvolvimento funcione bem)
Meu aplicativo ficou pronto para venda na App Store, mas nenhum dos meus dispositivos de produção (dispositivos que instalaram o aplicativo na App Store) estão recebendo notificações por push. Quando tento enviar uma notificação por push para um dispositivo de produção, estou recebendo este erro:
"The credentials supplied to the package were not recognized"
(System.ComponentModel.Win32Exception)
Esta exceção é lançada internamente e capturada em um loop infinito:
É lançado na linha 539 deApplePushChannel.cs
Arquivo:
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);
}
Esta é a saída do aplicativo no Visual Studio Output:
...
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)
Aqui estão as coisas que eu tentei:
Verifique duas vezes se o ID do dispositivo que estou tentando está registrado com um token de dispositivo de produção.Revogou e regenerou o certificado de produção APNS, exportou-o com a chave privada para um novo.p12
e tente novamente com o novo certificado. (Eu tive o mesmo problema com as notificações push de desenvolvimento, e isso resolveu o meu problema)O protocolo SSL foi alterado deSsl3
paraTls
. (alguns dias atrás, houve um problema com a versão do protocolo e ele corrigiu um problema temporariamente. Não deveria haver necessidade disso, mas o erro que estou recebendo é o mesmo que estava recebendo antes do qual isso foi corrigido)Verifiquei que realmente estou tentando conectar-me ao servidor de produção com o certificado de produção, em vez do servidor / certificado de desenvolvimento.Verifiquei se consigo acessar o servidor APNS diretamente (meu aplicativo ASP.NET mora dentro de uma Parallels VM Windows 8.1 no meu Mac, eis a saída do meu Mac, apenas para evitar confusão:(Saída terminal)Edit: Eu estava executando o ping no servidor sandbox, executei o ping no servidor de produção, verifiquei que também consigo conectar-me a ele, por isso não é o problema.
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
Por que o PushSharp não negociava com servidores APNS?