#c# #.net #apple-push-notifications #pushsharp
#c# #.net #apple-push-уведомления #pushsharp
Вопрос:
Я использую PushSharp 4.0.10 В событии OnNotificationFailed брокера Apns, я получаю исключение «Запрошенная функция не поддерживается». Есть создатель моего брокера
private static ApnsServiceBroker CreateApnsBroker(string certificate)
{
// Configuration (NOTE: .pfx can also be used here)
var config = newApnsConfiguration(
ApnsConfiguration.ApnsServerEnvironment.Sandbox,
certificate,
ConfigurationManager.AppSettings["Cert_Passwd"],
false);
// Create a new broker
var apnsBroker = new ApnsServiceBroker(config);
// Wire up events
apnsBroker.OnNotificationFailed = (notification, aggregateEx) =>
{
aggregateEx.Handle(ex =>
{
// See what kind of exception it was to further diagnose
if (ex is ApnsNotificationException notificationException)
{
// Deal with the failed notification
var apnsNotification = notificationException.Notification;
var statusCode = notificationException.ErrorStatusCode;
Logger.Info($"Apple Notification Failed:
ID={apnsNotification.Identifier},
Code={statusCode}",
ex);
}
else
{
// Inner exception might hold more useful information
// like an ApnsConnectionException
Logger.Info($"Apple Notification Failed for some unknown reason:
{ex.InnerException}",
ex);
}
// Mark it as handled
return true;
});
};
apnsBroker.OnNotificationSucceeded = (notification) =>
{
Logger.Info($"Apple Notification Sent for device {notification.DeviceToken}");
};
return apnsBroker;
}
Отправить уведомление
private static void QueueNotification(
ApnsServiceBroker apnsBroker,
string deviceToken,
string payload)
{
// Queue a notification to send
apnsBroker.QueueNotification(new ApnsNotification
{
DeviceToken = deviceToken,
Payload = JObject.Parse(payload),
Expiration = DateTime.Now.AddDays(2)
});
}
Когда я останавливаю брокера в OnNotificationFailed, возникает исключение catch. В PushSharp и в моем коде я использую ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Используя сертификат .p12 для уведомлений voip, он добавлен в mmc
В чем моя ошибка?
Комментарии:
1. У меня такая же проблема. Несколько дней назад все работало нормально. Сегодня это не так. Вы обновили Windows 10? Я сделал…
Ответ №1:
Я клонирую репозиторий PushSharp, компилирую локальную dll, меняю ссылки на проект, и это работает, но я не знаю почему.
Ответ №2:
Похоже, что пакет в Nuget не соответствует коду в Github. Последняя версия на Github поддерживает протокол TLS 1.2, который недавно стал обязательным. Поэтому единственным решением является клонирование репозитория, создание его самостоятельно и добавление ссылки на недавно созданную DLL.
Ответ №3:
Временное исправление:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
Поместите это в свой application_startup или startup.cs