2015-10-15 2 views
1

На IOS9 если iPhone находится в режиме экономии батареи, обратный вызовIOS9 Нажмите режим вкладчика батареи - didReceiveRemoteNotification не называется

application:didReceiveRemoteNotification:fetchCompletionHandler: 

не называется. Вместо этого я получаю следующее предупреждение в консоли

High Priority Push: com.your-company.app - Battery Saver Mode Enabled 

При использовании PushKit это похоже на работу.

Испытывает ли кто-либо другое подобное поведение?

Любые другие обходные пути?

ответ

2

Я считаю, к сожалению, это предполагаемое поведение. Документация о push-уведомлениях постоянно хеджирует их надежность. Например .:

https://developer.apple.com/library/mac/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html

Важно: Доставка уведомлений является «максимум усилий», не гарантировано. Он не предназначен для доставки данных в приложение, только уведомляет пользователя о том, что новые данные доступны

Есть много условий, при которых уведомления не будут доставлены или доставки будет задержана, и иногда Apple объединяет несколько уведомлений и только доставляет последнюю.

PushKit - более надежная замена приложений, требующих функциональности VOIP, где использование уведомления для звонка пользователю для вызова требует большей надежности. Вот почему он все еще работает в режиме экономии заряда батареи.

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

+0

Мне нравится, когда вы отвечаете, Джо Кастро. Извините, но у меня нет достаточной репутации. Когда кто-то хочет сделать надежное приложение для обмена сообщениями без VoIP, кажется, что нелегко, чтобы получить уведомление о появлении новых сообщений. Если вы хотите избежать опроса. PushKit может быть разрешен только для VoIP-приложений. Существуют ли другие условия - кроме режима энергосбережения или нескольких уведомлений, где толчки не должны работать? –

+0

У Apple, похоже, есть эвристика, которую они не хотят документировать (я ожидаю, потому что они не хотят, чтобы люди полагались на них), когда они решили не нажимать уведомления. Один из сценариев - когда телефон не находится в сети, и как только он вернется, ваше приложение может получить только последнее. Другим разумным сценарием является то, что Apple решает, что ваше приложение отправляет слишком много уведомлений относительно того, сколько пользователь активно использует приложение. Руководство Apple по этому поводу обычно гласит: «Напиши уведомления, как будто они надежные, но убедитесь, что ваше приложение будет работать, если ни один из них не появится». –

+0

Спасибо за ваши усилия, Джо. Я нахожу, что есть разница в том, что вы не получаете толчков и получаете не так много толчков. Последнее в порядке, первое - нет ;-) –

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