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