Apple, толчок уведомление с резким APNS - PullRequest
3 голосов
/ 02 июля 2010

Я использую библиотеку APNS Sharp для своего пуш-уведомления Apple.я опустил с Здесь .i использую пример тестовой программы, предоставленной библиотекой APSS sharp без каких-либо изменений.
просто не отправляет никаких уведомлений, пока я не поставлю точку останова на этой строке кода.если я поставлю точку останова.Я просто отлично работаю. Это ожидаемое поведение или я делаю что-то не так.а также я не получаю никаких исключений.спасибо за любую помощьвот код

static void Main(string[] args)
{
    bool sandbox = true;
    string testDeviceToken = "Token";
    string p12File = "apn_developer_identity.p12";
    string p12FilePassword = "yourpassword";
    int sleepBetweenNotifications = 15000;
    string p12Filename = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, p12File);
    NotificationService service = new NotificationService(sandbox, p12Filename, p12FilePassword, 1);
    service.SendRetries = 5; 
    service.ReconnectDelay = 5000; //5 seconds
    service.Error += new NotificationService.OnError(service_Error);
    service.NotificationTooLong += new NotificationService.OnNotificationTooLong(service_NotificationTooLong);
    service.BadDeviceToken += new NotificationService.OnBadDeviceToken(service_BadDeviceToken);
    service.NotificationFailed += new NotificationService.OnNotificationFailed(service_NotificationFailed);
    service.NotificationSuccess += new NotificationService.OnNotificationSuccess(service_NotificationSuccess);
    service.Connecting += new NotificationService.OnConnecting(service_Connecting);
    service.Connected += new NotificationService.OnConnected(service_Connected);
    service.Disconnected += new NotificationService.OnDisconnected(service_Disconnected);
    Notification alertNotification = new Notification(testDeviceToken);
    alertNotification.Payload.Alert.Body = "Testing {0}...";
    alertNotification.Payload.Sound = "default";
    alertNotification.Payload.Badge = i;
    if (service.QueueNotification(alertNotification))
      Console.WriteLine("Notification Queued!");
    else
      Console.WriteLine("Notification Failed to be Queued!");
    Console.WriteLine("Cleaning Up...");

    service.Close();// if i dont put a break point in here, it simply does not send any notification

    service.Dispose();

}

Я надеюсь, что мой вопрос ясен ...
Обновление: Я застрял здесь. Пожалуйста, любой может мне помочь.

Ответы [ 2 ]

2 голосов
/ 11 июля 2010

я обнаружил проблему. это была ошибка в рабочем потоке потока библиотеки APNS SHARP.

EDIT:
я вызываю этот метод после постановки всех уведомлений в очередь.
как
service.start ();
а вот метод

     public void Send()
    {
        foreach (NotificationConnection conn in this.notificationConnections)
        {
           // Console.Write("Start Sending");
            conn.start(P12File, P12FilePassword);
        }
    }
1 голос
/ 05 апреля 2011

Я тоже это вижу. Глядя на метод NotificationConnection.Close (), я нашел это:

// Спи здесь, чтобы предотвратить состояние гонки // в котором уведомление может быть поставлено в очередь, пока рабочий поток // спит после своего цикла, но если мы установим значение закрытия true в течение этих 100 мс, // уведомления в очереди за это время не будут удалены из цикла // выйдет из-за закрытия = true; // 250 мсек должно быть достаточно времени, чтобы цикл удалил все оставшиеся уведомления // после того как мы прекратили принимать выше Thread.Sleep (250);

И в упомянутом цикле я нашел: Thread.Sleep (500);

Установка времени сна в методе close на 1000 исправила это для меня;) - ответ от: http://code.google.com/p/apns-sharp/issues/detail?id=41

...