Sobes.tech
Junior

Меёрӣ дар бораи давраи зиндагии барномаи iOS гап занӣ?

sobes.tech AI

Ҷавоб аз AI

Қосымшаның келесі жағдайлардан өтуі:

  • Жүгіруде емес: Қосымша іске қосылмаған.
  • Белсенді емес: Қосымша іске қосылған, бірақ оқиғаларды қабылдамайды (мысалы, кіріс қоңырау кезінде немесе фон режиміне өту кезінде).
  • Белсенді: Қосымша белсенді және толық функционалды. Барлық оқиғаларды қабылдайды.
  • Фон: Қосымша фон режимінде. Шектеулі кодты орындай алады немесе тоқтатылуы мүмкін.
  • Тоқтатылған: Қосымша фон режимінде, бірақ оның орындалуы жүйе ресурстарын үнемдеу үшін тоқтатылған.

Күй арасындағы өту және оларға байланысты оқиғалар жүйелік UIKit (немесе SwiftUI) және қосымша делегаты (UIApplicationDelegate немесе @main Struct SwiftUI-да) арқылы басқарылуы мүмкін.

Қосымшаның делегатының негізгі әдістері:

  • application:didFinishLaunchingWithOptions:: Қосымша іске қосылды.
  • applicationDidBecomeActive:: Қосымша белсенді болды.
  • applicationWillResignActive:: Қосымша белсенділіктен шықты (мысалы, кіріс қоңырау кезінде).
  • applicationDidEnterBackground:: Қосымша фон режиміне өтті.
  • applicationWillEnterForeground:: Қосымша фоннан алдыңғыға өтті.
  • applicationWillTerminate:: Қосымша жабылды.

App Delegate-те мысал:

import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Қосымша іске қосылған кезде орындалады
        print("Қосымша іске қосылды")
        return true
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
        // Қосымша белсенді болды
        print("Қосымша белсенді")
    }

    func applicationWillResignActive(_ application: UIApplication) {
        // Қосымша белсенділіктен шықты
        print("Қосымша белсенділіктен шықты")
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
        // Қосымша фон режиміне өтті
        print("Қосымша фон режиміне өтті")
    }

    func applicationWillEnterForeground(_ application: UIApplication) {
        // Қосымша фоннан алдыңғыға өтті
        print("Қосымша фоннан алдыңғыға өтті")
    }

    func applicationWillTerminate(_ application: UIApplication) {
        // Қосымша жабылды
        print("Қосымша жабылды")
    }
}

SwiftUI-де өмірлік цикл @main құрылымымен және onAppear, onDisappear, onChange әдістерімен басқарылуы мүмкін. Сондай-ақ, ScenePhase арқылы күйді бақылауға болады:

import SwiftUI

@main
struct MyApp: App {
    @Environment(\.scenePhase) var scenePhase // Көрініс күйін бақылау

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .onChange(of: scenePhase) { newPhase in
            if newPhase == .active {
                // Көрініс белсенді болды
                print("Көрініс белсенді")
            } else if newPhase == .inactive {
                // Көрініс белсенді емес
                print("Көрініс белсенді емес")
            } else if newPhase == .background {
                // Көрініс фон режиміне өтті
                print("Көрініс фон режиміне өтті")
            }
        }
    }
}