Как стать автором
Обновить

Комментарии 12

почему для нашего приложения (электронная газета на iPad) все вышеперечисленное не сработало
А почему не сработал newsstand?
По нескольким причинам.
Во-первых, в newsstand можно посылать всего один push день — а у нас несколько выпусков. Во-вторых, newsstand довольно серьезно завязан на автоматически обновляемую подписку, а она не во всех странах доступна. Ну и кроме этого, newsstand требует хранить данные у себя и может удалить не активный в данный момент контент, если он решит что у него осталось мало места…
С такой ложкой дегтя от бочки меда никакого проку. Ну не то чтобы никакого, но очень существенно снижает полезность API. Я понимаю, что они борятся за жизнь батареи, но подчас методы совсем уж драконовские.
В iOS 7 та же самая ситуация с Significant Location Changes — если устройство было перезагружено или приложение было удалено из списка задач пользователем, то обновления не приходят и приложение не просыпается. В iOS 6 такой проблемы не было, никак не пойму баг ли это сейчас или фича и как обойти.
Да, фича явно глючная, т.к. нотификации не присылаются не только погда приложение было закрыто пользователем, а ещё и когда села батарейка, к примеру, и телефон был перезагружен…
После перезагрузки весь список задач сохраняется и если не запускается, то скорее всего это баг.
При тестировании данной фичи я написал апп, который показывал локальную нотификацию всякий раз, когда система запускала backgroundFetch, а параметр minimumBackgroundFetchInterval = UIApplicationBackgroundFetchIntervalMinimum. За пару дней обычного использования айфона при наличии Wi-Fi апп запускается в фоне несколько раз в день. Иногда подряд около 5-10 раз с интервалом 10-20 мин.

Есть ещё один момент, если возвращать через completionHandler значение UIBackgroundFetchResultNewData, то система будет считать, что вы сохранили новые данные и скорее всего ваш UI тоже будет выглядеть по новому и соответственно скриншот аппа в списке задач устарел. Поэтому, по не понятным правилам, но апп будет отдельно запущен в фоновым режиме для перегенерации скриншота. Поэтому апп Погоды «всегда» показывает актуальную температуру на скриншоте в списке задач.
Есть ли возможность делать снимки фотокамерой внутри performFetchWithCompletionHandler?
Забавная идея, надо попробовать.
попробовал. С первого раза не получилось (фото не делается). Но в принципе можно попробовать покопать в сторону private API, поскольку такая шпионская программа в AppStore скорее всего не попадет…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации