Ваш ApplicationDelegate получает уведомление о намеренном выходе пользователя:
- (void)applicationWillResignActive:(UIApplication *)application {
Когда я получаю это уведомление, я просто звоню
exit(0);
Который делает всю работу. И самое главное, это намерение пользователей выйти, поэтому это не должно быть проблемой, вызывая его там.
В моем Audio-App было необходимо выйти из приложения после того, как люди синхронизировали свое устройство, пока музыка еще играла. Как только синхронизация завершена, я получаю уведомление. Но выход из приложения сразу после этого на самом деле будет выглядеть как сбой.
Поэтому вместо этого я установил флаг, чтобы ДЕЙСТВИТЕЛЬНО выйти из приложения при следующем фоновом действии. Это нормально для обновления приложения после синхронизации.