Я считаю, что то, что вы отправляете тихое уведомление, не означает, что приложение сразу же получит уведомление.
Из моих наблюдений с использованием GSM iPhone. Всякий раз, когда я разговариваю по телефону, тип сотовых данных сбрасывает диапазон, например. LTE -> 3G, 3G -> EDGE и т. д. Таким образом, сеть передачи данных ненадежна.
Вы также заявляете, что это не происходит во время колебаний сети, система получила уведомление, а не передала его в целях экономии заряда батареи. Чем медленнее сотовое соединение для передачи данных, тем больше разряжается батарея.
Что касается телефонного звонка по Wi-Fi, до сих пор не получено тихое уведомление. Сотовый чип работает, использование Wi-Fi еще больше разряжает батарею.
Насколько я понимаю, тихое уведомление должно сообщить устройству, что доступны новые данные. Поскольку окно для загрузки указанных данных в фоновом режиме является небольшим окном, могут быть определенные случаи, когда это не подходит, поскольку примеры, которые вы описываете, по сути являются причинами.
При телефонном звонке -> Сотовый чип используется для передачи голоса. Передача данных — это дополнительная работа для чипа, которая может значительно сократить срок службы батареи.
Колебания сети -> Система не может гарантировать надежное соединение, позволяющее загружать данные. Кроме того, нахождение в области более низкой скорости передачи данных является дополнительной нагрузкой на сотовый чип, который пытается найти более сильную и стабильную полосу соединения.
Автоматическое уведомление позволяет вашему приложению предоставлять пользователю свежие данные в качестве преимущества для пользователя, когда он переключается обратно в ваше приложение, им не нужно долго ждать свежего контента. Но это не является существенной частью функциональности приложения. Система также определит, передавать ли ваше уведомление, основываясь на других факторах, таких как время, прошедшее с момента последнего запуска. Слишком быстрое или долгое время после закрытия приложения может означать, что ваше приложение не получит приоритет и ему придется ждать других приложений.
слишком рано: контент все еще относительно свежий. долгое время: пользователь мало использует приложение. Экономьте ресурсы.
Смешайте с этими шаблонами запуска. Если вы отправляете уведомление в то время, когда пользователь с большей вероятностью запустит ваше приложение на основе предыдущих шаблонов, вы, скорее всего, получите уведомление.
Наконец, чтобы процитировать документацию:
Важно: доставка уведомлений является «максимальным усилием», а не гарантируется. Он не предназначен для доставки данных в ваше приложение, а только для уведомления пользователя о наличии новых доступных данных.
Найти здесь
person
Naughty_Ottsel
schedule
26.11.2014
{ "aps": { "alert": "Hello World", "sound": "default", "content-available": 1 } }
чтобы убедиться, что вы видите оповещение и получаете push-уведомление. - person iMemon   schedule 25.11.2014application:didFinishLaunchingWithOptions:
. Подробности здесь и здесь некоторые похожие вопросы, если это проблема: Сбой при обработке удаленного уведомления когда приложение не запущено ПЛЮС параметры запуска iPhone - person iMemon   schedule 25.11.2014application:didFinishLaunchingWithOptions:
, как было предложено? - person iMemon   schedule 25.11.2014