2014-12-18 6 views
0

Четыре вопроса о Push уведомления.IOS: Apple Push Уведомления понимание

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    UIApplicationState state = [application applicationState]; 

    if (state == UIApplicationStateActive) { 
     //app is in foreground I can fetch 
    } else { 
     //App is in background, can I still fetch the server? Is there a time limit? 
    } 
} 
  1. Используя код выше, когда приложение находится в фоновом режиме, могу ли я получать сервер? Есть ли ограничение по времени? Если ответ: Нет, я не могу получить сервер в фоновом режиме, есть ли альтернативы?

  2. Есть ли другие преимущества использования бесшумного уведомления, помимо запуска какого-либо метода для запуска в течение 30 секунд, когда приложение находится в фоновом режиме?

  3. Если на переднем плане используется тихое уведомление и приложение, используется следующий метод?

    -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
          { 
           completionHandler(UIBackgroundFetchResultNewData); 
          } 
    
  4. В полезной нагрузке делает "content-available" : 1 вызывает метод в Q3 (выше)? или есть что-нибудь еще, что может вызвать метод в Q3?

+0

Один вопрос на вопрос - лучший. Не могли бы вы отредактировать это в минимальном элементе, который вам нужно решить о push-уведомлениях? – bmike

+0

На самом деле я пытаюсь найти лучший подход, и все четыре вопроса связаны. – user1107173

+0

Что значит «_fetch server_»? – nburk

ответ

0
  1. Да, вы все еще можете получить сервер, когда приложение находится в фоновом режиме. Для многих приложений фоновое состояние - это всего лишь краткая остановка на пути к приостановке приложения.

  2. Нет, это основное преимущество использования тихих уведомлений см. В этом link.

  3. Да Применение: didReceiveRemoteNotification: fetchCompletionHandler: называется независимо от приложения state.If приложение приостановлено или не работает, то система просыпается или запускает приложение и помещает его в фоновом режиме работает состояние перед вызовом метода , Этот метод предназначен для отображения обновленного контента для пользователя. Когда этот метод вызывается, ваше приложение имеет до 30 секунд времени настенных часов для выполнения операции загрузки и вызова указанного блока обработчика завершения. Если обработчик не вызван вовремя, ваше приложение будет приостановлено.

  4. Да он вызывает приложения: didReceiveRemoteNotification: fetchCompletionHandler:, если вы хотите толчок уведомление, чтобы разбудить ваше приложение в фоновом режиме вам необходимо включить возможность удаленного уведомлений, а затем реализовать код для обработки этого удаленного оповещения (либо путем обнаружения его в приложении : didFinishLaunchingWithOptions:, если ваше приложение еще не запущено, или путем применения приложения : didReceiveRemoteNotification: fetchCompletionHandler: в случае, если ваше приложение уже запущено). В ответ на удаленный notificaiton вы будете внутренне запускать ваш код. Конечно, вам также необходимо регистрироваться для удаленных уведомлений и отправлять токен на ваш сервер. см. это discussion

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