Приложение запускается с главного экрана, если приложение остается в фоновом режиме более 30 секунд вместо отображения экрана, когда оно перешло в фоновый режим

#ios #objective-c #background-process #ios13

Вопрос:

Мое приложение для iOS-это своего рода приложение для обмена сообщениями, поэтому пользователь может отправлять аудио, видео, изображения и т. Д. Когда пользователь вводит сообщение, и приложение переходит в фоновый режим более чем на 30 секунд, затем приложение запускается с главного экрана, и все эти сообщения, все будет потеряно. Не прошло и 30 секунд, как приложение запустилось точно в том месте, где оно появилось в фоновом режиме. Итак, как сделать то же самое и через 30 секунд, по крайней мере, я должен поддерживать это состояние в течение 30 минут.

Будет ли использование фонового процесса и задачи планирования хорошим методом здесь, в iOS 13 ?

Я особенно не хочу ничего делать в фоновом режиме, но когда приложение переходит из фона на передний план в течение 30 минут, я хочу сохранить это состояние.

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

1. «по крайней мере, я должен поддерживать это состояние в течение 30 минут». Тогда вам нужно будет использовать намного меньше памяти и других ресурсов, когда вы переходите в фоновый режим. Сторожевой пес убивает тебя за то, что ты боров с памятью.

2. Когда я перехожу в фоновый режим , я не запускаю никакого фонового процесса , но как запустить приложение в течение 30 минут в iOS 13 , в соответствии с условиями iOS 13 приложение не будет работать более 30 секунд в фоновом режиме.

Ответ №1:

Сообщения Исчезают

Ну, во-первых, почему все сообщения потеряны? если вы пытаетесь создать подобный snapchat, в котором сообщения исчезают после того, как вы их видите, это нормально, но в противном случае, возможно, стоит добавить локальное хранилище для этих сообщений CoreData .

Причина

Основная проблема, через некоторое время iOS превратится в приложение sleep , так сказать, в этом сценарии оно удалит все временные данные в вашем приложении, это означает, что при повторном открытии оно начнется с самого начала, оно делает это для экономии памяти.

Решение

Есть несколько способов решить эту проблему, вы можете использовать восстановление состояния

Для новичка, хотя это может быть довольно сложно, так как документация по нему довольно скудна.

Другим вариантом было бы сохранить последний экран, UserDefaults а затем, когда приложение снова запустится, вы можете использовать это значение, чтобы нажать на последний экран, на котором находился пользователь. Для обоих этих решений, хотя вам понадобится способ сохранения сообщений и их повторной выборки (база данных) CoreData , вероятно, будет вашим лучшим выбором

Я лично считаю, что восстановление штата-лучший вариант, тем более, что, похоже, это именно то, что вы хотите сделать:

но когда приложение переходит из фона на передний план в течение 30 минут, я хочу сохранить это состояние.

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

1. Используя восстановление состояния , похоже, что нам нужно добавить все контроллеры и какие данные нам нужно сохранить, в этом случае нам нужно добавить весь контроллер, если у него более 10 ? это правда