Push-уведомление IOS не работает с помощью PushSharp - PullRequest
0 голосов
/ 16 мая 2018

Я использую PushSHarp в своем проекте через Nuget и VisualStudio (c #), чтобы попытаться отправить push-уведомление через APN.

Я создал все необходимые файлы, используя свою учетную запись Apple (сертификат разработки, файлы .p12 и т. Д.).

Каждый раз, когда я использовал правильный код, у меня все еще появляется одна и та же ошибка (я все заново создаю, чтобы убедиться, что мой токен не плох):

ID = 1 код = ошибка соединения PushSharp.Common.NotificationException: недействительный DeviceToken à PushSharp.Apple.ApnsNotification.ToBytes () à PushSharp.Apple.ApnsConnection.createBatch (список 1 toSend) à PushSharp.Apple.ApnsConnection.<SendBatch>d__21.MoveNext() Message Apns notification error: 'ConnectionError' String PushSharp.Apple.ApnsNotificationException: Apns notification error: 'ConnectionError' ---> PushSharp.Common.NotificationException: Invalid DeviceToken à PushSharp.Apple.ApnsNotification.ToBytes() à PushSharp.Apple.ApnsConnection.createBatch(List 1 до отправки) à PushSharp.Apple.ApnsConnection.d__21.MoveNext ()

Не могли бы вы помочь мне в этом вопросе, пожалуйста? я действительно не понимаю, что случилось.

Я использую приведенный ниже код, указанный на их странице git wiki, для отправки уведомлений вот код

string TokenId = "f38205ce2137862735bd32e85b581dc85e2dc0abc04a2702e2899bddb9114543";

         PushNotificationApple _notifservice = new PushNotificationApple();

                _notifservice.SendAppleNotification(TokenId, "Test1");

    public void SendAppleNotification(string tokenId, string message)
            {
                byte[] appleCert = null;

                try
                {
                    appleCert = File.ReadAllBytes("F:\\Dev\\ap.p12");
                    System.Diagnostics.Debug.WriteLine("OK LECTURE APPLE CERT");
                }
                catch (Exception ex)
                {
                    var toto = ex.Message;
                    System.Diagnostics.Debug.WriteLine(" Exception lecture"+ ex.Message);
                }

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

                // 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)
                        {

                            System.Diagnostics.Debug.WriteLine("ERRREUR NOTIFICATION");
                            var notificationException = (ApnsNotificationException)ex;

                            // Deal with the failed notification
                            var apnsNotification = notificationException.Notification;
                            var statusCode = notificationException.ErrorStatusCode;

                            System.Diagnostics.Debug.WriteLine("Apple Notification Failed: ID= " + notificationException.Notification.Identifier+" Code= "+ statusCode);
                            System.Diagnostics.Debug.WriteLine("link "+  ex.HelpLink);
                            System.Diagnostics.Debug.WriteLine("Inner "+  ex.InnerException);
                            System.Diagnostics.Debug.WriteLine("Message " + ex.Message);
                            System.Diagnostics.Debug.WriteLine("String " + ex.ToString());

                        }
                        else
                        {
                            // Inner exception might hold more useful information like an ApnsConnectionException           
                            System.Diagnostics.Debug.WriteLine("Apple Notification Failed for some unknown reason : {ex.InnerException}");

                        }

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

                apnsBroker.OnNotificationSucceeded += (notification) =>
                {
                    System.Diagnostics.Debug.WriteLine("APPLE NOTIFICATION SENT");
                   // Console.WriteLine("Apple Notification Sent!");
                };

                // Start the broker
                apnsBroker.Start();


                var notification_message = "{\"aps\":{\"alert\":{\"title\":\" Title " + message + "\",\"body\":\"Body " + message + "\"},\"badge\":\"1\"}}";
                // Queue a notification to send
                apnsBroker.QueueNotification(new ApnsNotification
                {
                    DeviceToken = tokenId,
                    Payload = JObject.Parse(notification_message)

                });

                // Stop the broker, wait for it to finish   
                // This isn't done after every message, but after you're
                // done with the broker
                apnsBroker.Stop();
            }
        }
...