PushSharp Apple - Le message reçu était inattendu ou mal formaté
Je suis l'aide de la version 2.1.2 de PushSharp. L'application est .NET 4.5.1 (bien que j'ai aussi essayé de ciblage .NET 4.5 et .NET 4)
Je suis en train, mais ne réussissant pas à envoyer des messages push par le bac à sable Apple IPA.
Je suis avec succès l'envoi de messages à l'aide d'un script PHP fourni ici, sur Ray Wenderlich de procédure pas à pas en utilisant le même certificat et l'envoi vers le même ID de périphérique comme pour mon PushSharp app.
J'ai testé en les exportant le formulaire de cert p12 de la chaîne de la clé. L'exportation le formulaire de certificat. L'exportation de la clé privée. Également par la méthode utilisée ici. Quand je combine les cert et une clé pour une utilisation dans le script PHP, je n'ai pas de problèmes.
J'ai importé le certificat p12 sur les machines que j'ai testé à partir de la, ne semble pas faire de différence.
J'ai essayé de changer le IsProduction drapeau lors de l'enregistrement du push d'apple service à la simple pression d'un courtier. Il n'y a pas d'erreur lorsqu'il est défini comme la production (même si c'est un bac à sable cert), mais on ne veut pas obtenir par le biais de l'appareil dans ce cas non plus.
Aucun de mes messages, tous les accéder à un service d'exception qui se présente comme suit:
System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> System.ComponentModel.Win32Exception: The message received was unexpected or badly formatted
--- End of inner exception stack trace ---
at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at PushSharp.Apple.FeedbackService.Run(ApplePushChannelSettings settings, CancellationToken cancelToken)
at PushSharp.Apple.ApplePushService.<>c__DisplayClass4.<.ctor>b__1(Object state)
C'est essentiellement ce que mon code ressemble à ceci:
var push = new PushBroker();
//register event handlers for channel create/destroy/exception, notificationrequeue, serviceexception, notification sent
var appleCert = File.ReadAllBytes(ConfigurationManager.AppSettings["CertAddress"]);
push.RegisterAppleService(new ApplePushChannelSettings(false, appleCert, ConfigurationManager.AppSettings["CertPassword"]));
var pn = new AppleNotification().ForDeviceToken(item.SendToDeviceIdentifier).WithAlert(item.AlertMessage).WithBadge(item.Badges);
push.QueueNotification(pn);
Je reçois le canal jusqu'à l'événement appelé, et le service d'exception.
Certaines des questions liées à mentionner que cette erreur peut être liée à un problème de firewall - j'ai testé de mon application dans 2 réseaux différents qui sont en mesure d'envoyer des notifications push (dont 1 à l'aide d'un PushSharp application actuellement).
Aucune information serait très apprécié.
OriginalL'auteur bean | 2014-04-16
Vous devez vous connecter pour publier un commentaire.
Nous avons eu le même problème en utilisant le désormais obsolète APNS-Forte à la bibliothèque (ancêtre de PushSharp). J'ai soumis une demande d'extraction pour APN-Sharp qui résout le problème basé sur mes tests.
La modification a consisté à modifier (dans ApplePushChannel.cs)
à
Je n'ai pas trouver une confirmation sur ce point, mais il semblait que le protocole SSL3 n'était plus pris en charge par le bac à sable d'APN. Comme les autres, qui a signalé le problème, mes notifications à l'encontre de la Production APN étaient encore au travail.
Vous pouvez trouver des pull request ici:
https://github.com/Redth/PushSharp/pull/369/files
Mise à jour
Il y a un thread sur le site web des Développeurs Apple sur ce sujet:
https://devforums.apple.com/thread/224320?tstart=0
Cependant, certains de ces gens-là sont aussi sur ce fil ou sur le github du fil. Donc, l'information est biaisée, pour sûr. Un contact que j'ai à la Pomme est en train de dire:
Il n'existe pas de documentation officielle encore, il semble que l'APN est en mouvement vers TLS plutôt que le SSL (uniquement basé sur de voir ce changement - je n'ai pas entendu quoi que ce soit officiel).
Pas de chance pour moi. J'ai compilé la version actuelle, depuis le package nuget est pas encore mis à jour et j'obtiens la même erreur qu'avant ... le code d'erreur HRESULT est -2146233087. Je ne sais pas si c'est utile ...
J'ai essayé de suivre le lien vers le site apple developer forum pour expliquer le point de mire, SSL TLS et il vient de mon Membre de la page d'accueil du Centre.
Pas de chance moi non plus. J'ai téléchargé le code source de github pour la Lune-APNS github.com/arashnorouzi/Moon-APNS, fait rouler mon propre notification d'application et a obtenu la même erreur à la même ligne de code dans cette solution. J'ai essayé
System.Security.Authentication.SslProtocols.Tls
,System.Security.Authentication.SslProtocols.Ssl3
, etSystem.Security.Authentication.SslProtocols.Default
J'ai rencontré le même problème aujourd'hui et il a été résolu avec le correctif ci-dessus; mais je trouve cela très étrange. Quelqu'un sait si cela a déjà été documenté quelque part entre les deux?
OriginalL'auteur Phil Lalonde
Si vous exécutez Windows Server 2003 (je sais, je sais), vous aurez à exécuter ce patch ou vous aurez toujours des erreurs étranges, même après l'application du correctif. J'ai passé quelques heures à me demander pourquoi mon server 2008 travaillé et mon server 2003 n'a pas.
http://support.microsoft.com/kb/948963
OriginalL'auteur S. Binder