Чтобы избежать реализации постоянной логики кэширования всего навигационного стека, я хочу сохранить свое приложение «живым» (по крайней мере, на 2 часа) даже в фоновом режиме, поэтому, когда пользователь снова откроется приложение, где оно было, прежде чем идти спать.Предотвращение iOS из-за убийства моего приложения через 3 минуты
Я попытался с фоновой задачи:
_timerBackgroundTaskId = UIApplication.SharedApplication.BeginBackgroundTask(() =>
{
// Run some dummy code here. Shouldn´t this prevent the task from actually stopping?
var remaining = UIApplication.SharedApplication.BackgroundTimeRemaining;
this.Log().Debug($"Expiration. Remaining: {remaining}. Timer seconds left: {_secondsLeft}");
});
// I´m actually using the timer for something :)
_nsTimer = NSTimer.CreateRepeatingScheduledTimer(TimeSpan.FromSeconds(1), delegate { TimerTick(); });
// later on (after 3 minutes)
UIApplication.SharedApplication.EndBackgroundTask(_timerBackgroundTaskId.Value);
Независимо от того, что я стараюсь, через 3 минуты IOS убивает приложение. Некоторые ответы в SO рассказывают, как это сделать с поддельным фоновым звуком, но я не хочу никаких проблем с обзорами Apple.
Любые советы?
Лучше правильно обрабатывать восстановление приложений, а не пытаться сделать что-то сложное. У вашего приложения есть только 3 минуты времени выполнения фона. Ограничения предназначены для максимального времени автономной работы и обеспечения доступности памяти для других приложений, которые пользователь может захотеть запустить. – Paulw11
Восстановление - это то, что я пытаюсь избежать, но я сделаю это, если нет другого пути. – xleon
Три минуты - это жесткий предел, если ваше приложение не использует законные возможности использования одного из доступных режимов фона. – Paulw11