В чем разница между удаленным уведомлением и тихим уведомлением в iOS?

Когда я читаю Apple Docs, они упоминают 3 типы уведомлений: локальное, удаленное и тихое.

Локальное уведомление можно вывести из его имени, которое приложение отправляет локально.

Однако в чем разница между двумя другими типами?


comment
ПРИМЕЧАНИЕ. В документации Apple беззвучное уведомление переименовано в фоновое уведомление!   -  person Honey    schedule 23.02.2020


Ответы (3)


РЕДАКТИРОВАТЬ: Хотя этот ответ полностью применим, есть некоторые дополнения (не изменения) к уведомлениям в iOS 12. Я настоятельно рекомендую посмотреть WWDC 2018: Что нового в уведомлениях пользователей и прочтите эта замечательная статья, которую необходимо прочитать.

Основные изменения:

  • сгруппированные уведомления вместе с форматом сводки
  • предварительные уведомления, т.е. показывать уведомления прямо в центре уведомлений без разрешения пользователя
  • критические уведомления, которые игнорируют "не беспокоить" или "отключать звук"
  • возможность взаимодействия с уведомлениями в расширениях
  • возможность полностью сбросить или обновить действия
  • возможность глубже подключаться к настройкам уведомлений приложения из Центра уведомлений телефона

ВАЖНОЕ ПРИМЕЧАНИЕ. Не знаю, с каких пор, но из документации Apple, "тихое уведомление" было переименовано в "фоновое уведомление".

Слишком много настроек, которые нужно настроить правильно, чтобы он работал. Я постараюсь их проанализировать и облегчить понимание.

В целом важно несколько вещей.

  • общая разница между тихим и пользовательским уведомлением
  • различные типы уведомлений пользователей
  • как удаленное уведомление, то есть полезная нагрузка, настраивается с вашего сервера
  • как включить push-уведомления и удаленные уведомления из фоновых режимов в вашем проекте
  • как зарегистрировать свой токен в APN для удаленных и тихих уведомлений и архитектуры APN
  • как запросить разрешение для уведомлений пользователя
  • включение "фонового обновления приложения" и "уведомлений" с устройства
  • что такое content-available
  • понимание того, что iOS является апстримом для вашего приложения, когда дело доходит до получения удаленного уведомления
  • что происходит, когда ОС получает уведомления, когда приложение было закрыто пользователем
  • Замечание о надежности и архитектуре APNs

Я настоятельно рекомендую всем посмотреть первые 7 минут: WWDC 2015: Что нового в уведомлениях . Оттуда ведущий упоминает, что существует 2 основных типа уведомлений:

Тихие уведомления

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

Ошибка iOS 11

См. здесь. В первых выпусках iOS 11 были ошибки для тихих уведомлений. Убедитесь, что у вас установлена ​​последняя версия для тестирования, иначе она может не сработать.


Уведомления пользователей

введите описание изображения здесь

Как видно из названия, это как-то связано с пользователем. То есть пользователь увидит предупреждение / значок или услышит звук. Имеет 2 вида.

Локальные уведомления

Локальное уведомление может быть запущено тремя разными способами:

  • UNLocationNotificationTrigger: Вы видите предупреждение, когда находитесь рядом с магазином Walmart.

  • UNTimeIntervalNotificationTrigger: например, Вы видите предупреждение каждые 10 минут.

  • UNCalendarNotificationTrigger, как 1 декабря, 13:00 2017 г.

Удаленные уведомления

Они похожи на localNotifications, но запускаются с сервера, например сообщение WhatsApp с полем «От» (мама) и полем тела (я люблю тебя!).

Регистрация токенов и архитектура APN:

Чтобы получать тихое или удаленное уведомление, вам необходимо зарегистрировать токен, используя:

application.registerForRemoteNotifications() 

???? Регистрация НЕ требует разрешения пользователя. Благодаря этому беззвучные уведомления становятся плавными. См. этот момент видео WWDC

Беззвучные уведомления включены по умолчанию. Пользователь не должен утверждать ваши - не дает разрешения вашему приложению использовать их, и вы можете просто начать использовать их, не спрашивая разрешения у пользователя.

из WWDC

Помните. APN доставляются вашим пользователям через APN, а не на ваш сервер. Итак, ваш код iOS должен отправить этот токен на ваш сервер. Таким образом, сервер может связать данный токен устройства с пользователем. Когда вы хотите отправить запрос определенному пользователю, ваш сервер просто сообщает APN, что нужно отправить полезную нагрузку на конкретный токен. Важно понимать, что ваш сервер и APN - это разные вещи.

Его поток выглядит так:

 

введите описание изображения здесь

 

  1. сервер / провайдер отправляет данные в APN
  2. APN отправляет уведомление всем целевым устройствам данной учетной записи. например ваш iPhone, Mac может получать уведомления для писем / сообщений.
  3. Затем ваш iPhone / Mac доставит это сообщение в приложение. APN не отправляет сообщения напрямую в ваше приложение. Он отправляет его на устройство. Затем iOS отправляет его в ваше приложение.

Подробнее об этом см. Docs Обзор APN и Отправка запросов на уведомление APN < / а>


Чтобы иметь возможность показывать значки / предупреждения / звуки, вам необходимо запросить у пользователя разрешение:

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
    
    guard error == nil else {
        //Display Error.. Handle Error.. etc..
        return
    }
    
    if granted {
        //Do stuff here..
        
        //Register for RemoteNotifications. Your Remote Notifications can display alerts now :)
        application.registerForRemoteNotifications()
    }
    else {
        //Handle user denying permissions..
    }
}

Вопрос: Нужно ли мне запрашивать доступ один раз для локальных уведомлений и один раз для удаленных уведомлений?

Нет. Просто напишите приведенный выше фрагмент, и он запросит доступ для как удаленного, так и локального доступа.

А теперь перейдем к самому сложному: D


Xcode Project + настройки iPhone

Нужно ли мне что-то включать, чтобы получать беззвучные уведомления?

  1. Вы должны включить Push-уведомления в ваших возможностях Xcode:

введите описание изображения здесь

Если вы не включите это, ваше приложение не получит токен. А без токена сервер вас не узнает.

  1. Чтобы иметь возможность загружать материалы из фона, вам необходимо включить: удаленные уведомления из фоновых режимов.

Чтобы включить backgroundModes, вы можете сделать это либо < / em> используя ваши plist или возможности Xcode.

Причина, по которой вы можете сделать это в любом случае, заключается в том, что: plist ближе к вашему коду и является старым способом, возможно, он существует для поддержки устаревших версий. Возможности Xcode - это более новый и простой способ.

plist:

введите описание изображения здесь

Элемент 0 - это просто индекс, это не ключ словаря (то, что вы обычно видите в plist), UIBackgroundModes - это array строк. Строки должны происходить только от принятого значения из UIBackgroundModes Array.

Возможности Xcode:

Проверьте Remote Notification в Xcode в фоновых режимах, как показано ниже:

введите описание изображения здесь

Если вы не сделаете ничего из вышеперечисленного, отключите уведомления с помощью:

 введите описание изображения здесь

убьет удаленные и локальные уведомления


Однако, если вы действительно включите фоновое обновление приложения с помощью возможностей plist или Xcode, то даже при отключенных для приложения уведомлениях вы все равно будете получать тихие уведомления!

Если пользователь хочет отключить тихие уведомления, ему придется отключить оба уведомления и отключить «фоновое обновление приложения» для вашего приложения / во всей системе. Чтобы отключить «обновление фонового приложения» в вашей системе, вам необходимо сделать следующее:

 введите описание изображения здесь

Зачем я все это говорю? Чтобы объяснить вам, что настройки тихих и push-уведомлений различаются для пользователя и ограничения на их отправку различны. Для получения дополнительной информации см. этот момент с WWDC. видео. См. здесь (предыдущая ссылка была мертва):

Беззвучные уведомления включены по умолчанию.

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

Но автоматические уведомления - это механизм фонового обновления приложения.

В любой момент вы знаете, что пользователь может зайти в настройки и отключить их.

Таким образом, вы не можете рассчитывать на их постоянную доступность.

Вы не знаете, отключил ли их пользователь, и вы больше не получаете уведомления.

Это также означает, что автоматические уведомления доставляются с максимальной эффективностью.

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

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

Он может попытаться сэкономить заряд батареи или попытаться соответствовать поведению пользователя и сделать контент доступным, когда пользователь с большей вероятностью будет его использовать.

Также см. здесь.

ПРЕДОСТЕРЕЖЕНИЕ: даже если вы отключите фоновое обновление приложения и отключите разрешающие уведомления, вы все равно сможете получать беззвучные уведомления, если ваше приложение находится в FOREGROUND. Если ваше приложение работает в фоновом режиме, они не будут доставлены.


Нужно ли мне что-то включать для получения удаленных уведомлений?

Вам просто нужно включить Push-уведомления в ваших возможностях Xcode:

введите описание изображения здесь

Если вы не включите это, ваше приложение не получит токен. А без токена сервер вас не узнает.


Структура полезной нагрузки APN

Любопытно ... Можете ли вы сказать мне, как должны выглядеть мои полезные данные?

Я настоятельно рекомендую вам ознакомиться с Apple § документация. Это очень понятно, И СМОТРИТЕ ТАКЖЕ Отправка запросов на уведомления в APN. В основном платформа выполняет HTTP / 2-вызов APN и отправляет желаемую полезную нагрузку. Отправка правильных заголовков имеет решающее значение, иначе ваши уведомления не будут доставлены на устройства!

Спасибо, но не могли бы вы рассказать мне самые важные детали?

ммм ... Хорошо, но вы знаете, что это из ссылки, которую я только что сказал:

Для тихих уведомлений существует единственный критерий:

  • Словарь aps полезной нагрузки должен включать ключ content-available со значением 1.
  • В docs можно отправлять другие поля.

Если есть видимые для пользователя обновления, которые идут вместе с фоновым обновлением, вы можете установить ключи предупреждений, звука или значка в словаре APS, в зависимости от ситуации.

Пример полезной нагрузки будет выглядеть так:

{
    "aps" : {
        "content-available" : 1
    },
    "acme1" : "bar",
    "acme2" : 42
}

acme1, acme2 или просто некоторые пользовательские данные! Но для ключа aps вы ДОЛЖНЫ следовать структуре Apple, иначе он не будет отображать правильно, и вы не сможете правильно читать данные.

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

{
    "aps" : {
        "content-available" : 1,
        "alert" : {
          "body" : "",
        },
    },
}

Для уведомлений пользователей:

Вам нужен alert ключ внутри aps.

В качестве примера:

{
    "aps" : {
        "alert" : "You got your emails.",
        "badge" : 9,
        "sound" : "bingbong.aiff"
    },
    "acme1" : "bar",
    "acme2" : 42
}

Существует также третий вариант, о котором я расскажу ниже.

Что касается фиксированных ключей словаря aps и alert, см. Эти Документы Apple.

Хорошо, понял. Что такое content-available?

Очень простой. Это просто флаг, который сообщает вашему приложению, что вам нужно проснуться и скачать что-то, потому что у меня есть контент, доступный для загрузки! Для получения дополнительной информации см. Этот точный момент.

По умолчанию флаг content-available не включен, то есть по умолчанию отправляемые вами уведомления не запускают application(_:didReceiveRemoteNotification:fetchCompletionHandler:) или что-то делают в вашем приложении. Он просто покажет уведомление. Если вы хотите разбудить приложение (для выполнения каких-либо действий в фоновом режиме), вам нужно включить content-available и установить для него значение 1.

§: Если вы используете Firebase, ваша структура полезной нагрузки и ключи могут немного отличаться. Например, ключ content-available заменяется на content_available. Для получения дополнительной информации см. документацию по Firebase, а также здесь.


Я знаю, что вы сказали мне, что я могу загрузить что-то в свое приложение, только когда использую беззвучные уведомления, но есть ли способ, которым я могу также разбудить свое приложение в фоновом режиме и загрузить что-то для удаленных уведомлений?

Да, но тогда, как и в случае беззвучного уведомления, вы также должны установить флаг content-available на 1, чтобы он знал, что нужно проснуться и что-то загрузить. В противном случае он просто всплывет и предупредит / значок / звук, но ничего не загрузит.

ВАЖНЫЕ ЗАМЕТКИ:

  • Если в вашем приложении есть только тихие уведомления, просто включите push-уведомления + удаленные уведомления от возможностей и установите content-available на 1 для каждой полезной нагрузки.
  • Если в вашем приложении есть только удаленные уведомления, просто включите push-уведомления из возможностей. Для content-available делать нечего.
  • Однако, если вы хотите, чтобы ваши уведомления отображали предупреждение / значок / звук, а также загружали что-то в фоновом режиме, у вас должны быть включены как удаленные уведомления, так и push-уведомления + установить content-available на 1.

(ТРЕТИЙ ВАРИАНТ)

{
    "aps" : {
        "content-available" : 1 
        "alert" : "You got your emails.",
        "badge" : 9,
        "sound" : "bingbong.aiff"
    },
        "acme1" : "bar",
        "acme2" : 42
}

Этот момент из видео WWDC упоминает ????

Цитата инженера Apple:

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


Уведомления и жизненный цикл приложения iOS

Я не понимаю, что такое удаленные уведомления. Я думал, что всякий раз, когда я получаю уведомление, мое приложение становится активным в фоновом режиме и что-то загружает. Вы можете объяснить?

например в данный момент:

введите описание изображения здесь

  • Ваш iPhone только что получил удаленное уведомление без отправителя. Чтобы получить это, WhatsApp не должен работать в фоновом режиме, то есть вам не нужно включать удаленные уведомления из BackgroundModes. Вы все равно получите уведомление, даже если ваше приложение было принудительно закрыто или приостановлено, потому что процессом управляет ОС, а не приложение WhatsApp. Однако, если вы хотите иметь возможность загружать фактическое сообщение или его изображение / видео в WhatsApp (чтобы после того, как ваш пользователь откроет WhatsApp, видео будет сидеть там, ожидая пользователя), тогда вам нужно, чтобы ваше приложение стало активным. . Для этого вам нужно content-available : 1 и реализовать application(_:didReceiveRemoteNotification:fetchCompletionHandler:) .

  • Точно так же, если вы отключили сотовые данные для приложения, вы все равно будете получать его уведомления. Однако, нажав на это уведомление, пользователь не сможет отправлять какие-либо сетевые запросы для этого приложения. Они смогут только открыть приложение.

  • Или, что касается другого аналогичного сценария, если сервер / точка доступа, к которой вы подключены, имеет ограниченный доступ, скажем, для WhatsApp, он все равно позволит вам получать уведомления APN. Однако, нажав на это уведомление, пользователь не сможет отправлять какие-либо сетевые запросы для этого приложения. Они смогут только открыть приложение.

ПРЕДОСТЕРЕЖЕНИЕ: если приложение было принудительно закрыто пользователем, то, хотя вы и получили уведомление по вышеупомянутым причинам, вы не можете ничего сделать, чтобы автоматически вывести приложение из завершенного состояния. (даже если для content-available установлено значение 1). Ни один из ваших методов делегата не будет задействован. Пользователь должен открыть приложение, и только тогда будут доступны методы вашего делегата.


Замечание о надежности и архитектуре APN:

Хотя уведомления широко используются для доставки фактического содержимого в приложение, они в некоторой степени НЕ предназначены для доставки содержимого в приложение. Скорее, они предназначены для уведомления пользователя о том, что пришло что-то новое (сообщение размером 2b или маленькое изображение размером 50kb, или изображение 10mb или видео 2gb). Откройте приложение, если хотите. Кстати, вот небольшой фрагмент (само сообщение если оно может поместиться, заголовок изображения или миниатюра, показанная в уведомлении, заголовок видео или миниатюра, показанная в видео. Для получения дополнительной информации см. резервный вариант APN для iOS. Повторюсь, вы никогда не загружаете вложение размером 40 МБ отправлено в электронном письме. Вы просто получаете уведомление о его существовании. Вы отправляете достаточно (эскиз вложения), чтобы пользователь был проинформирован о том, что нового, и мог решить, нужно ли ему открывать приложение для большего количества. Когда Я был новичком в iOS и думал, что вы действительно отправляете изображение / видео через push-уведомление.

В частности, в случае беззвучных уведомлений:

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

  • Когда система получает новое фоновое уведомление, она отбрасывает старое уведомление и сохраняет только самое новое.

  • Если что-то принудительно завершает или убивает приложение, система отбрасывает задержанное уведомление.

  • Если пользователь запускает приложение, система немедленно отправляет задержанное уведомление. Отправка фоновых обновлений в ваше приложение docs

  • APN отправляет ограниченное количество тихих уведомлений - уведомлений с ключом доступного содержимого - в день. Кроме того, если устройство уже превысило свой дневной бюджет мощности, тихие уведомления не отправляются снова, пока не будет сброшен бюджет мощности, что происходит один раз в день. Эти ограничения отключены при тестировании вашего приложения из Xcode. См. Раздел «Размещение фоновых обновлений в вашем приложении».

Советы по устранению неполадок при обработке ошибок, возвращаемых ANP

Даже для уведомлений удаленного пользователя пользователь может быть отключен от Интернета, и это может привести к просроченному контенту или APN могут задушить вас, если вы отправляете уведомления слишком много или слишком быстро. Смотрите здесь снова

Короче говоря, APN и ОС - король, и вы ниже этого. Следовательно, вы не можете полагаться на его выполнение каждой вашей команды. При этом он очень надежен в том смысле, что вы видите, что большинство приложений для обмена сообщениями успешно его используют.

Приложение Как создать сертификат push-уведомления, .p12 или .pem и как все это проверить?

Просто посмотрите этот потрясающий ответ. На нем больше всего скриншотов, которые я когда-либо видел.

person Honey    schedule 17.02.2017
comment
Даже если вы отключите фоновое обновление приложения и отключите разрешающие уведомления, вы все равно сможете получать тихие уведомления, если ваше приложение находится в FOREGROUND. Я пробовал это безуспешно. Вы пробовали и видели, как это работает? - person John L.; 05.11.2017
comment
@JohnL. Мне придется проверить это и вернуться к вам позже. Не уверен, когда, потому что мне нужно настроить все, чтобы проверить это - person Honey; 05.11.2017
comment
привет, когда я получаю push-уведомление, приложение должно стать активным в фоновом режиме и выполнить задачу, указанную в (например, код обновления местоположения пользователя или какой-либо другой код), - (void) application: (UIApplication *) application didReceiveRemoteNotification: (NSDictionary *) userInfo fetchCompletionHandler: (void (^) (UIBackgroundFetchResult)) completionHandler, но мое приложение не станет активным, пока пользователь не коснется уведомления. как мне это сделать, пока приложение работает в фоновом режиме? Я следил за всем, что сказал @Honey, но бесполезно. Dose кто-нибудь знает решение для этого? Я использую FCM для уведомления. - person Moxarth; 29.11.2017
comment
@Moxarth Трудно тебе помочь. Можете ли вы написать новый вопрос, а затем показать нам все свои настройки / полезную нагрузку / методы делегирования? Также не забывайте, что для FCM имя ключа НЕ content-available, я считаю, что это content_available. Дополнительную информацию см. здесь - person Honey; 30.11.2017
comment
Я был приятно удивлен (по крайней мере, в моем случае), когда понял, что мое приложение получает беззвучные уведомления, даже если пользователь отключил уведомления. Согласно руководствам, это не критическая функция, но она избавляет от головной боли, которая, как мне казалось, у меня была. Если подумать об этом больше, это имеет смысл, поскольку все, о чем просит пользователь, - это НЕ получать уведомления, а он - нет. Просто приложение есть. - person ScottyB; 17.01.2019
comment
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) У меня есть одно сомнение, когда мое приложение находится на переднем плане, этот метод вызывается без нажатия на него, поэтому, если мне нужно открывать экран только по касанию, это запускает эту функцию. Как запустить функцию, когда приложение находится на переднем плане, пользователь получает уведомление и нажимает на него. - person Sharad Chauhan; 06.08.2020
comment
Это лучший ответ, который я когда-либо видел на SO. Спасибо, милая - person Cerise; 25.05.2021

Push-уведомление позволит пользователю узнать, что он получил уведомление (например, с отображением всплывающего окна с уведомлением). Беззвучное уведомление обновится, но пользователь не получит уведомления об этом. В любом случае вы можете выполнять действия при уведомлении в беззвучном режиме, как если бы это было push-уведомление. Единственное отличие состоит в том, что пользователь не получит уведомление во всплывающем уведомлении.

С push-уведомлением:  введите описание изображения здесь

С автоматическим уведомлением:  введите описание изображения здесь

Разница в полезной нагрузке:

Отправить уведомление:

     aps {
       content-available: 1
       alert: {...}
     }

Беззвучное уведомление:

    aps {
      content-available: 0
      alert: {...}
    }

И вы должны установить в Возможности выбранный вами фоновый режим.

person Juan Curti    schedule 16.02.2017
comment
Отправить уведомление? Вы имеете в виду push = remote. Или нажать = удаленный + беззвучный? - person transang; 16.02.2017
comment
push = удаленный + беззвучный. Единственная разница в том, что беззвучный режим не уведомляет пользователя всплывающим окном. В любом случае, это происходит только тогда, когда приложение находится в фоновом режиме. Если приложение находится на переднем плане, пользователь никогда не получит уведомление во всплывающем окне. - person Juan Curti; 16.02.2017
comment
установлен ли тип уведомления (удаленное, автоматическое) на моем сервере перед отправкой? Или это просто способ, которым iOS классифицирует push-уведомления по статусу телефона? - person transang; 16.02.2017
comment
спасибо за обновление вашего ответа. Но я вижу уведомление Push / Remote в вашем ответе, а в вашем комментарии Push = Remote + silent - person transang; 16.02.2017
comment
обе диаграммы имеют одинаковый content-available = 1, хотя - person transang; 16.02.2017
comment
Извините, я хотел сказать, что удаленный и тихий - это одно и то же, единственная разница - это всплывающее уведомление в фоновом режиме. @tranvansang Я получил это изображение в Google, позвольте мне отредактировать его - person Juan Curti; 16.02.2017
comment
вам нужно получить разрешение от пользователя для беззвучного уведомления? - person Honey; 16.02.2017
comment
@Honey Да, да (насколько я знаю) - person Juan Curti; 16.02.2017
comment
вы разделили на Push / Remote и Silent. Это заставляет людей (включая меня) путать, что Push и remote - это одно и то же, а silent - это разные виды. Пожалуйста, отредактируйте свой ответ, если считаете, что он должен быть - person transang; 17.02.2017
comment
почему здесь говорит «Включите этот ключ с значение 1 для настройки беззвучного уведомления. Разве это не противоположность тому, о чем говорит изображение ?! - person Honey; 24.02.2017
comment
content-available: 1 означает молчание. На самом деле это означает, что на сервере есть контент, подключитесь к нему, чтобы загрузить данные контента. Таким образом, приложение будит для этого приложение, не сообщая пользователю, что на самом деле происходит. - person AndaluZ; 06.07.2017
comment
@AndaluZ правильно. Кроме того, вы также можете установить content-available в 1, а затем одновременно получать оповещения. См. «Третий вариант» из моего ответа здесь. (Этот ответ на 100% неверен и сбивает с толку) - person Honey; 13.09.2017

Тихое push-уведомление достигает устройства, пользователь ничего не знает об уведомлении, но его приложение получает уведомление, и приложению будет предоставлено некоторое время для загрузки нового контента и его представления пользователю, независимо от состояния приложения (т.е. запущено или нет. Бег)

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

Для получения дополнительной технической информации вы можете перейти по этим ссылкам:

Уведомления Apple

Тихие уведомления

person Bidisha Pyne    schedule 16.02.2017
comment
привет, когда я получаю push-уведомление, приложение должно стать активным в фоновом режиме и выполнить задачу, указанную в (например, код обновления местоположения пользователя или какой-либо другой код), - (void) application: (UIApplication *) application didReceiveRemoteNotification: (NSDictionary *) userInfo fetchCompletionHandler: (void (^) (UIBackgroundFetchResult)) completionHandler, но мое приложение не станет активным, пока пользователь не коснется уведомления. как я могу это сделать, пока приложение находится в фоновом режиме? .dose кто-нибудь знает решение для этого? Я использую FCM для уведомления. - person Moxarth; 29.11.2017