iOS APNS не получена в фоновом режиме - PullRequest
1 голос
/ 15 ноября 2011

Я пытаюсь получить уведомление в фоновом режиме. Я не хочу, чтобы пользователь запускал мое приложение при получении уведомления в уведомлении. Но похоже, что iOS не отправляет уведомление функции обратного вызова didReceiveRemoteNotification: Любые входы?

Есть ли что-то особенное, что мне нужно выполнить, чтобы получить толчок в фоновом режиме.

К вашему сведению: я также пытался использовать фоновый режим voip, но ничего не получилось !!!

По сути, я хочу, чтобы мое приложение получало уведомление без запуска приложения и выполняло некоторые действия, пока приложение работает в фоновом режиме.

Ответы [ 2 ]

5 голосов
/ 15 ноября 2011

Но похоже, что iOS не отправляет уведомление функции обратного вызова didReceiveRemoteNotification:

Это правда. Если ваше приложение работает в фоновом режиме, вы не получите уведомление о входящем push-уведомлении, если пользователь фактически не запустит приложение, взаимодействуя с уведомлением об уведомлении.

По сути, я хочу, чтобы мое приложение получало уведомление, при этом пользователю не нужно запускать мое приложение / пользовательское вмешательство и выполнять некоторые действия при работе в фоновом режиме.

Это невозможно.

1 голос
/ 10 февраля 2015

Есть возможность получать удаленные уведомления и просыпаться. Но важно понимать текущую реализацию и то, как на нее влияет поведение приложения. Все вещи могут быть изменены под Apple. На момент написания этой статьи вот что вам нужно знать (первые 2 большинство людей явно ворчат):

  1. Прежде всего, ваше приложение должно включать «Удаленные уведомления» в качестве обязательного фонового режима.
  2. Ваше приложение должно зарегистрироваться для удаленных уведомлений, как описано в https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html
  3. Вы ДОЛЖНЫ знать , какой обратный вызов выполняется в вашем приложении (UIApplicationDelegate for Swift) на основе вашего текущего состояния приложения (передний план, фон, приостановлено и т. Д.)
    • Передний план - будет звонить application:didReceiveRemoteNotification или более предпочтительно application:didReceiveRemoteNotification:fetchCompletionHandler
    • Background / Suspended - ТОЛЬКО (потенциально) вызовет application:didReceiveRemoteNotification:fetchCompletionHandler, а вы лучше вызовите fetchCompletionHandler в течение 30 секунд или ваше приложение будет остановлено. Если вы не реализовали метод с помощью fetchCompletionHandler, то, вероятно, вы сможете получить только значок / предупреждение от Системы ЕСЛИ , которую вы поместите в содержимое сообщения APN. Иначе ничего не увидишь.

Теперь вот подвох. Текущий iOS профилирует ваше приложение, и ТО решает, действительно ли ваше приложение будет активировано. Если вы потратите много времени на тестирование APN, оно, в конечном счете, будет считать ваше приложение плохим гражданином и не разбудит ваше приложение (если только вы не подключитесь к источнику питания по крайней мере). Он просто подождет, пока ваше приложение не будет запущено (что вы можете побудить пользователя сделать через системный значок / оповещение в вашем сообщении APN), а затем поместит это удаленное уведомление в launch / Опции did / willFinishLaunchingWithOptions под ключом UIApplicationLaunchOptionsRemoteNotificationKey

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...