Вызов кода уведомления (принудительное закрытие приложения)

Мне было интересно, как приложения, такие как Whatsapp, могли предоставить квитанцию ​​доставки (двойную зеленую проверку) отправителю сообщения.

Я видел, что даже если вы принудительно завершаете Whatsapp (с помощью переключателя задач приложения и отбрасывая приложение), отправитель по-прежнему получает квитанцию ​​доставки (двойная зеленая проверка) только в тот момент, когда на телефон поступает push-уведомление. Очевидно, что они могут выполнять код (делать запрос на бэкэнд, сообщая о доставке) при получении push-уведомления.

С iOS7 можно отправить полезную нагрузку push-сообщения с «content-available»: 1, это позволяет получателю уведомления выполнять код пользователя, поэтому, во-первых, я думал, что они используют эту функцию. Однако, если пользователь принудительно покидает приложение, тогда код пользователя не выполняется при получении уведомления. Из-за этого я не могу имитировать поведение Whatsapp.

Я включил возможности> Режимы фона и проверил удаленные уведомления.

Я обрабатываю уведомление с помощью этого метода:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 

Я отправляю уведомление с этой полезной нагрузкой:

 { "aps":{ "alert":"Hello world", "sound":"MySound.wav", "content-available":1 } } 

Я уже проверил:

  • Будет ли iOS запускать мое приложение в фоновом режиме, если оно будет принудительно закрыто пользователем?
  • Видео WWDC Что нового в многозадачности (№ 204 от WWDC 2013)

Я также читал о PushKit (хотя я и не пробовал), что, возможно, может помочь здесь, но я понимаю, что приложение должно быть VOIP-приложением. Очевидно, что я не хочу требовать от VOIP моего приложения просто выполнять код при получении push-уведомления.

Благодарю.

Вы просто ответили на свой вопрос в своем описании.

  1. Невозможно разбудить приложение через регулярное push-уведомление, если оно было принудительным.

    См. Руководство по программированию приложений для iOS :

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

  2. Уведомления VoIP Push могут разбудить приложение, даже если оно было принудительным.

    См. Рекомендации по переходу по IP-адресу (VoIP) :

    Ваше приложение автоматически перезапускается, если оно не работает при приеме VoIP-сигнала.

  3. Две синие метки в WhatsApp означают, что получатель читает сообщение. Если вы получили две синие метки, сразу после получения push-уведомления это ошибка дизайна или ошибка в WhatsApp, поскольку вы не можете сказать, если пользователь действительно прочитал уведомление. Если вы получаете две серые метки, это означает, что сообщение было доставлено на устройство. Опять же, если вы получили две серые метки, сразу после получения push-уведомления и приложения было принудительно закрыто, либо WhatsApp (ошибочно) использует VoIP push для этого, либо они просто предполагают, что push был доставлен или будет доставлен.

  • Сбросить значок приложения iOS
  • iOS - «Имитация» Push-уведомлений
  • Что происходит с push-уведомлениями после потери доступа в Интернет?
  • Firebase Cloud Messaging и подписка на несколько тем из iOS не работают
  • iOS push-уведомления - как бороться с идентификатором устройства?
  • сертификат распространения Apple вызывает 14094410: Подпрограммы SSL: SSL3_READ_BYTES: сбой вызова подтверждения sslv3
  • IOS Framework с push-уведомлениями
  • Уведомления PushSharp для iOS не достигают устройства
  • какая разница между APNs Распространение iOS и Apple Push Services
  • Метод удаленного уведомления называется дважды
  • iOS Тихие локальные push-уведомления объективные c?
  • Interesting Posts

    Строка состояния IOS 7 не отображается?

    Может ли geocodeAddressDictionary в iOS 9 быть реализован в отличие от iOS 8

    Как сделать ScrollView с AutoLayout в Xcode5

    Crashlytics не отправляет сообщение о сбоях на мою панель инструментов Fabric?

    У кого-нибудь есть примеры кода ECL Lisp для разработки Iphone?

    Восстановить фоновое изображение навигационной панели по умолчанию.

    должен ли я хранить ключ регистрации как жесткий код в моем приложении iOS или Android

    Как проверить, видим ли другой контроллер просмотра?

    Невозможно получить тестовое объявление с помощью AdMob на ios

    Как удалить прозрачную область UIImageView после маскировки?

    Изменение цвета текста кнопки возврата по умолчанию в раскадровке

    Сохранение массива в текстовый файл и привязка к электронной почте в быстром

    Создание панели программных вкладок с контроллерами представления раскадровки?

    Задержка прокрутки iOS UIPageViewController при переходе на страницу

    3 взаимосвязанных ползунка

    Давайте будем гением компьютера.