Files
tutti/apps/mobile/ios/TuttiMobile/AppLifecycleModule.swift
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

69 lines
1.5 KiB
Swift

import React
import UIKit
@objc(TuttiAppLifecycle)
final class AppLifecycleModule: RCTEventEmitter {
private var observing = false
@objc
override static func requiresMainQueueSetup() -> Bool {
true
}
override func supportedEvents() -> [String] {
[Self.eventName]
}
@objc
func isForeground() -> NSNumber {
if Thread.isMainThread {
return NSNumber(
value: UIApplication.shared.applicationState != .background
)
}
return DispatchQueue.main.sync {
NSNumber(value: UIApplication.shared.applicationState != .background)
}
}
override func startObserving() {
guard !observing else {
return
}
observing = true
NotificationCenter.default.addObserver(
self,
selector: #selector(applicationDidBecomeActive),
name: UIApplication.didBecomeActiveNotification,
object: nil
)
NotificationCenter.default.addObserver(
self,
selector: #selector(applicationDidEnterBackground),
name: UIApplication.didEnterBackgroundNotification,
object: nil
)
}
override func stopObserving() {
observing = false
NotificationCenter.default.removeObserver(self)
}
deinit {
NotificationCenter.default.removeObserver(self)
}
@objc
private func applicationDidBecomeActive() {
sendEvent(withName: Self.eventName, body: true)
}
@objc
private func applicationDidEnterBackground() {
sendEvent(withName: Self.eventName, body: false)
}
private static let eventName = "TuttiAppLifecycleChanged"
}