Как отличить заблокированное состояние от фонового состояния приложения в быстрой iOS17?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как отличить заблокированное состояние от фонового состояния приложения в быстрой iOS17?

Сообщение Anonymous »


Требование состоит в том, чтобы различать эти два состояния:
[*]
Во-первых, когда приложение было открыто и пользователь нажал кнопку блокировки, мобильный телефон заблокирован, и приложение перешло в фоновый режим.
[*]
Во-вторых, когда приложение было открыто и пользователь нажал кнопку «Домой» или провел по ней вверх, приложение перешло в фоновый режим, но телефон остался разблокированным.

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

Я попробовал комбинацию этих трех методов жизненного цикла приложения в файле AppDelegate.swift, чтобы определить, переходит ли приложение в фоновый режим при нажатии кнопки блокировки или при пролистывании кнопки «Домой» вверх:
[*]applicationWillResignActive [*]applicationDidBecomeActive [*]applicationDidEnterBackground
Инициализация этих трех переменных-флагов значением false в функции приложения внутри AppDelegate.swift:

let willResignActive = UserDefaults.standard пусть DidBecomeActive = UserDefaults.standard пусть DidEnterBackground = UserDefaults.standard willResignActive.set(false, forKey: «willResignActive») DidBecomeActive.set(false, forKey: «didBecomeActive») DidEnterBackground.set(false, forKey: «didEnterBackground») Это код моего файла AppDelegate.swift:

импортировать UIKit импортировать конденсатор @UIApplicationMain класс AppDelegate: UIResponder, UIApplicationDelegate { окно вар: UIWindow? func application(_ application: UIApplication, DidFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Переопределить точку настройки после запуска приложения. пусть willResignActive = UserDefaults.standard пусть DidBecomeActive = UserDefaults.standard пусть DidEnterBackground = UserDefaults.standard willResignActive.set(false, forKey: «willResignActive») DidBecomeActive.set(false, forKey: «didBecomeActive») DidEnterBackground.set(false, forKey: «didEnterBackground») вернуть истину } func applicationWillResignActive (_ приложение: UIApplication) { print("Приложение будет отключено!") пусть willResignActive = UserDefaults.standard willResignActive.set(true, forKey: «willResignActive») } func applicationDidEnterBackground (_ приложение: UIApplication) { print("Приложение вошло в фоновый режим!") пусть DidEnterBackground = UserDefaults.standard DidEnterBackground.set(true, forKey: "didEnterBackground") } func applicationDidBecomeActive (_ приложение: UIApplication) { print("Приложение стало активным!") пусть DidBecomeActive = UserDefaults.standard DidBecomeActive.set(true, forKey: «didBecomeActive») } } Предполагая, что какой-либо из этих трех методов жизненного цикла не вызывается ни в одном из двух сценариев (нажата кнопка блокировки или нажата кнопка «Домой»), я могу обнаружить разницу. Но поскольку все вышеперечисленные функции выполнялись в обоих случаях, для всех трех флагов было установлено значение true, из-за чего я не мог отличить, перешло ли приложение в фоновый режим с помощью кнопки блокировки или кнопки «Домой»!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»