Есть ли какая-либо функция для определения момента закрытия приложения на панели многозадачности, когда состояние приложения приостановлено?

Я хочу очистить данные приложения, когда пользователь удаляет приложение из переключателя приложений, проводя пальцем вверх после того, как приложение остается в фоновом режиме примерно от 3 до 4 часов.

Есть ли какая-либо функция или делегат, чтобы узнать, когда приложение убито, не выходя на передний план.

Я хочу, чтобы страница входа была открыта, когда пользователь убивает приложение из переключателя приложений. В противном случае он должен открыть домашнюю страницу.

Просто покажите экран входа в didFinishLaunching.

Cy-4AH 22.05.2019 12:41
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
3
1
426
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете сохранить текущее время в UIApplicationDelegate.applicationWillTerminate(_:) и UIApplicationDelegate.applicationDidEnterBackground(_:) по умолчанию. Когда приложение возвращается на передний план или запускается, вы читаете это время из пользовательских настроек по умолчанию.

Но когда приложение убито из приостановленного состояния, applicationWillTerminate(_:) не вызывается, так как мне справиться с этим сценарием?

Darshan 22.05.2019 12:52

Вы удаляете дату приостановки/завершения, когда приложение выходит на передний план или запускается. Если приложение будет убито из приостановленного состояния, дата не будет сохранена с applicationWillTerminate. Вы просто проверяете существование тогда.

orkoden 27.05.2019 12:07
Ответ принят как подходящий

Решение для Свифта:

В файле AppDelegate.swift добавьте следующую функцию (если ее нет):

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // clean your apps data here
    cleanAppData()
    //show the login
    showLogin()
}

Эта функция вызывается только в том случае, если приложение «холодно запущено».

Это означает:

  • вызывается, если приложение было запущено в первый раз
  • если приложение было «убито» iOS
  • если приложение было "убито" пользователем
  • он не вызывается, если приложение работает в фоновом режиме и снова открывается

Затем добавьте следующую функцию (если ее нет) в AppDelegate.swift:

func applicationWillEnterForeground(_ application: UIApplication) {
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
    // show the homepage
    showHomePage()
}

Эта функция вызывается только в том случае, если приложение «горячий запуск», что означает, что приложение было запущено ранее и отправлено пользователем в фоновый режим.

Спасибо, это сработало для меня и сэкономило много часов.

Darshan 22.05.2019 15:48

Другие вопросы по теме