Я использую версию 2.1.2 PushSharp. Приложение .NET 4.5.1 (хотя я также пробовал настроить таргетинг на .NET 4.5 и .NET 4)
Я пытаюсь, но не удается отправить push-сообщения через песочницу Apple APNS.
Я успешно отправляю сообщения с помощью PHP script, предоставленного здесь, в прохождении Ray Wenderlich, используя тот же сертификат и отправка на тот же идентификатор устройства, что и для моего приложения PushSharp.
Я тестировал, экспортировав завершенный сертификат как p12 из ключевой цепи. Экспорт завершенного сертификата и ключа. Экспорт секретного ключа. Также с помощью метода здесь. Когда я объединяю cert и ключ для использования в PHP script, у меня нет проблем.
Я импортировал сертификат p12 на проверенные мной машины - кажется, не имеет значения.
Я попытался изменить флаг IsProduction при регистрации функции push apple для push-брокера. Нет ошибки, если она задана как производство (даже если это сертификат для песочницы), но в этом случае он, очевидно, тоже не попадает на устройство.
Ни одно из моих сообщений не пройдет, все получат исключение службы, которое выглядит следующим образом:
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)
В основном это мой код:
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);
Я получаю вызванное событие канала, а затем - исключение службы.
Некоторые из связанных вопросов упоминают, что эта ошибка может быть связана с проблемой брандмауэра - я тестировал свое приложение в двух разных сетях, которые могут отправлять push-уведомления (1 из которых использует приложение PushSharp в настоящее время).
Любое понимание было бы очень оценено.