Я работаю с приложением, которое работает с данными, полученными с сервера. Логика выборки довольно устойчива и отказоустойчива; большинство ошибок подключения автоматически повторяются, что обычно отлично работает. Однако, учитывая очень редкую совокупность обстоятельств (которые включают состояние гонки, связанную с задержкой в сети и базовую базу данных), приложение/сервер может попасть в непоследовательное состояние, из которого невозможно восстановить.Условно отключить фоновое изображение для приложения iOS?
Что бы я хотел сделать, это приложение, когда в этом состоянии просто прекращается в следующий раз, когда пользователь нажимает кнопку «домой» (вместо перехода на задний план). Приложение, при повторном запуске, будет повторно синхронизироваться с сервером, и пользователь пойдет по-своему.
Моя первая мысль - вызвать exit() из applicationDidEnterBackground, когда обнаружено несогласованное состояние. Есть ли у кого-нибудь опыт такого рода вещей или знать другой способ отключить фонирование на условной основе? Я понимаю, что это неодобрительно, кто-нибудь имеет опыт работы с Apple, явно отклоняющий приложение, обнаружив использование функции exit()? UIApplicationExitsOnSuspend = YES не является вариантом, поскольку многозадачность должна работать, как ожидалось, другой 99,999% времени.
Примечание: мои извинения за отсутствие специфики. Идеальное решение состоит в том, чтобы придумать способ оправиться от непоследовательного состояния; поверьте мне, когда я говорю много времени и усилий, чтобы понять, как это сделать.
К сожалению, это не только данные на устройстве, но и комбинация данных на устройстве и сервере, который является виновником. Есть другие клиенты нашего бэкэнда, что делает изменение API сложным. Технический Q & A, который вы опубликовали, очень напоминает эхо HIG относительно использования функции exit(). Однако наш интересный случай, так как мы хотим использовать exit() после того, как пользователь нажал кнопку «домой» - они ожидают, что приложение закроется, и это произойдет. –
@jenningj - Если несогласованность развивается как между клиентом, так и сервером, почему перезапуск приложения с нуля исправить проблему?Если перезапуск заставляет это уйти, кажется, что вы могли бы воспроизвести этот эффект в приложении, когда обнаружена несогласованность. Что касается выхода, несмотря на то, что приложение, похоже, выходит как обычно, я считаю, что журнал сбоев будет сгенерирован, что может поднять флаг с рецензентами. Опять же, они могут этого не заметить, поэтому вы можете играть в азартные игры и посмотреть, пройдет ли она. –