MoviaBox/MoviaBox/Libs/APPTool/SPAPPTool.swift
2025-05-09 16:31:18 +08:00

117 lines
3.4 KiB
Swift

//
// SPAPPTool.swift
// MoviaBox
//
// Created by on 2025/4/9.
//
import UIKit
class SPAPPTool: NSObject {
///app
static var isAppOpen = true
static var mainTabBarController: SPTabBarController?
static func getAppDelegate() -> AppDelegate? {
return UIApplication.shared.delegate as? AppDelegate
}
///
static func getLanuchViewController() -> UIViewController {
let storyboard = UIStoryboard(name: "LaunchScreen", bundle: nil)
let vc = storyboard.instantiateInitialViewController()
return vc!
}
///
static func rootViewController() -> UIViewController? {
return getKeyWindow()?.rootViewController
}
///
static func topViewController() -> UIViewController? {
var resultVC: UIViewController? = self.rootViewController()
if let rootNav = resultVC as? UINavigationController {
resultVC = rootNav.topViewController
}
resultVC = self._topViewController(resultVC)
while resultVC?.presentedViewController != nil {
resultVC = self._topViewController(resultVC?.presentedViewController)
}
return resultVC
}
private static func _topViewController(_ vc: UIViewController?) -> UIViewController? {
if vc is UINavigationController {
return _topViewController((vc as? UINavigationController)?.topViewController)
} else if vc is UITabBarController {
return _topViewController((vc as? UITabBarController)?.selectedViewController)
} else {
return vc
}
}
static func getKeyWindow() -> UIWindow? {
var window: UIWindow?
if #available(iOS 13.0, *) {
window = UIApplication.shared.connectedScenes
.filter({$0.activationState == .foregroundActive})
.map({$0 as? UIWindowScene})
.compactMap({$0})
.first?.windows
.filter({$0.isKeyWindow}).first
}
if window == nil {
window = UIApplication.shared.windows.first { $0.isKeyWindow }
}
if window == nil {
window = UIApplication.shared.keyWindow
}
return window
}
}
extension SPAPPTool {
///
static func copy(text: String?) {
if let text = text {
let copy = UIPasteboard.general
copy.string = text
SPToast.show(text: "Succeed".localized)
}
}
/**
*/
static func impactFeedbackOccurred() {
if #available(iOS 13.0, *) {
UIImpactFeedbackGenerator(style: .heavy).impactOccurred(intensity: 1)
} else {
UIImpactFeedbackGenerator(style: .heavy).impactOccurred()
}
}
}
extension SPAPPTool {
///
static func openApnsSetting() {
if #available(iOS 16.0, *) {
if let url = URL(string: UIApplication.openNotificationSettingsURLString) {
UIApplication.shared.open(url)
}
} else {
if let url = URL(string: UIApplication.openSettingsURLString) {
UIApplication.shared.open(url)
}
}
}
}