Ошибка уведомления Apple: ID = 2, код = ConnectionError

Я использую PushSharp 4.0.4, установленный из NuGet.

В событии OnNotificationFailed(ApnsNotification, AggregateException) брокера Apns я часто получаю это исключение:

Ошибка уведомления Apple: ID=2, Code=ConnectionError .

По моему это появляется из-за файла p12. У него может не быть всех прав на доступ через внешний API.

private void SendPushNotification(string deviceToken, string message)
{
    try
    {
        //Get Certificate
        var appleCert = System.IO.File.ReadAllBytes(HttpContext.Current.Server.MapPath("Certificates.p12"));

        //Configuration(NOTE: .pfx can also be used here)
        var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Sandbox ,appleCert, "1234567890");

        //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)
                {
                    var notificationException = (ApnsNotificationException)ex;

                    // Deal with the failed notification
                    var apnsNotification = notificationException.Notification;
                    var statusCode = notificationException.ErrorStatusCode;
                    string desc = $"Apple Notification Failed: ID={apnsNotification.Identifier}, Code={statusCode}";
                    Console.WriteLine(desc);
                    lblStatus.Text = desc;
                }
                else
                {
                    string desc = $"Apple Notification Failed for some unknown reason : {ex.InnerException}";
                    // Inner exception might hold more useful information like an ApnsConnectionException           
                    Console.WriteLine(desc);
                    lblStatus.Text = desc;
                }

                // Mark it as handled
                return true;
            });
        };

        apnsBroker.OnNotificationSucceeded += (notification) =>
        {
            lblStatus.Text = "Apple Notification Sent successfully!";
        };

        var fbs = new FeedbackService(config);
        fbs.FeedbackReceived += (string devicToken, DateTime timestamp) =>
        {
            // Remove the deviceToken from your database
            // timestamp is the time the token was reported as expired
        };

        //Start Proccess
        apnsBroker.Start();

        if (deviceToken != "")
        {
            apnsBroker.QueueNotification(new ApnsNotification
            {
                DeviceToken = deviceToken,
                Payload = JObject.Parse(("{\"aps\":{\"badge\":1,\"sound\":\"oven.caf\",\"alert\":\"" + (message + "\"}}")))
            });
        }

        apnsBroker.Stop();

    }
    catch (Exception)
    {

        throw;
    }
}

person Rohit Goyat    schedule 12.12.2017    source источник
comment
Привет и добро пожаловать в StackOverflow. Было бы здорово, если бы вы могли предоставить больше информации о функции и предыстории вашей проблемы с программированием, но самое главное, вам нужно спросить вопрос.   -  person compor    schedule 13.12.2017
comment
это все о фоновом программировании. Я не использовал такую ​​функцию фонового программирования, если что-то требуется, пожалуйста, укажите. Спасибо   -  person Rohit Goyat    schedule 28.12.2017


Ответы (1)


Я использую PushSharp 4.0.4, установленный из NuGet.

Для запуска push-уведомления APNS на С#. Я получил сообщение об ошибке:

Ошибка уведомления Apple: ID = 1, код = ConnectionError

Решение:

В этой ошибке для экспорта сертификата закрытого ключа цепочки ключей в формате .p12 и повторите попытку размещения сертификата. Чтобы получить результат.

person Community    schedule 10.07.2019