2013-05-23 3 views
1

Я отправил запрос на сервер в деле делегированном приложение: (UIApplication *) application didReceiveRemoteNotification:, но при одновременном получении нескольких push-уведомлений приложение получает сбой из-за отсутствия. запроса отправляется на сервер.Как обращаться с одновременным уведомлением нескольких push-уведомлений одновременно на переднем плане приложения в iOS

В методе делегата я пишу ниже код:

if (!downloadInboxQueue) { 
        downloadInboxQueue = [[NSOperationQueue alloc] init]; 
        downloadInboxQueue.maxConcurrentOperationCount=1; 
       } 

      NSNumber *ischatnumber=[[NSNumber alloc] initWithInt:0]; 
       operationObject=[[Operation_Inbox alloc] init]; 

       NSInvocationOperation *operation22= [[NSInvocationOperation alloc] initWithTarget:operationObject selector:@selector(getEventFromServer:) object:ischatnumber]; 
       [downloadInboxQueue addOperation:operation22]; 
       operation22=nil; 
       NSInvocationOperation *operation2= [[NSInvocationOperation alloc] initWithTarget:operationObject selector:@selector(getEventFromServer:) object:ischatnumber]; 
       [downloadInboxQueue addOperation:operation2]; 
       operation2=nil; 

// getEventFromServer: метод для отправки запроса и получить ответ ..........

пожалуйста, предложите мне, как обращаться что .

  1. Сколько раз метод делегата вызывался при поступлении нескольких push-уведомлений?
  2. сколько времени требуется (максимальное время) между отправкой HTTP-запроса и получением ответа?

ответ

1
  1. Это будет вызываться один раз для каждого толчка уведомления, который поступает на устройство, но если вы посылаете слишком много уведомлений в одном устройстве сразу, то возможно, что сервер APNS будет посылать только некоторые из них к устройству.

  2. Это не то, на что вы должны положиться. Вы должны сделать асинхронный вызов на свой сервер, чтобы не повредить приложение.

1
  1. Раз в уведомлении, но только если приложение работает. Если приложение открыто (то есть пользователь использует приложение) во время получения уведомления, iOS не показывает сообщение уведомления, вам необходимо обработать его с помощью application:(UIApplication *)application didReceiveRemoteNotification. В противном случае (приложение не запущено), пользователь может выбрать запуск приложения, нажав на любое push-уведомление.

  2. Синхронное время обратного перехода по протоколу HTTP может занять слишком много времени. Избегайте синхронных вызовов в методах делегатов. Вы можете ставить в очередь запросы на сервер в постоянном локальном хранилище и в конечном итоге отправлять их асинхронно на сервер, когда доступно сетевое соединение. Посмотрите, как это разрешено Мобильные платформы Backend, такие как Parse.com или InnoQuant MOCA (я работаю в InnoQuant).

Смежные вопросы