SceneDelegate.swift 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // SceneDelegate.swift
  3. // WisdomCampusApk
  4. //
  5. // Created by 方楚豪 on 2021/11/21.
  6. //
  7. import UIKit
  8. import MMKV
  9. class SceneDelegate: UIResponder, UIWindowSceneDelegate {
  10. var window: UIWindow?
  11. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
  12. // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
  13. // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
  14. // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
  15. guard let _ = (scene as? UIWindowScene) else { return }
  16. }
  17. func sceneDidDisconnect(_ scene: UIScene) {
  18. // Called as the scene is being released by the system.
  19. // This occurs shortly after the scene enters the background, or when its session is discarded.
  20. // Release any resources associated with this scene that can be re-created the next time the scene connects.
  21. // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
  22. }
  23. func sceneDidBecomeActive(_ scene: UIScene) {
  24. // Called when the scene has moved from an inactive state to an active state.
  25. // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
  26. }
  27. func sceneWillResignActive(_ scene: UIScene) {
  28. // Called when the scene will move from an active state to an inactive state.
  29. // This may occur due to temporary interruptions (ex. an incoming phone call).
  30. }
  31. func sceneWillEnterForeground(_ scene: UIScene) {
  32. // Called as the scene transitions from the background to the foreground.
  33. // Use this method to undo the changes made on entering the background.
  34. }
  35. func sceneDidEnterBackground(_ scene: UIScene) {
  36. // Called as the scene transitions from the foreground to the background.
  37. // Use this method to save data, release shared resources, and store enough scene-specific state information
  38. // to restore the scene back to its current state.
  39. print("进入到后台")
  40. }
  41. static func getCurrentWindow() -> UIWindow? {
  42. let keyWindow = UIApplication.shared.connectedScenes
  43. .map({ $0 as? UIWindowScene })
  44. .compactMap({ $0 })
  45. .first?.windows.first
  46. return keyWindow
  47. }
  48. func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
  49. guard let url = URLContexts.first?.url else {
  50. return
  51. }
  52. if url.scheme != nil && url.scheme! == "lancoowsc" {
  53. let urlComponents = NSURLComponents(string: url.absoluteString)
  54. let queryItems = urlComponents?.queryItems
  55. if queryItems != nil {
  56. for item in queryItems! {
  57. if item.name == "toUrl" {
  58. MMKV.default()!.set(item.value!, forKey: "scheme_to_url")
  59. }else {
  60. var milliStamp : String {
  61. let timeInterval: TimeInterval = Date().timeIntervalSince1970
  62. let millisecond = CLongLong(round(timeInterval*1000))
  63. return "\(millisecond)"
  64. }
  65. MMKV.default()!.set("\(milliStamp)_\(String(describing: item.value!))", forKey: item.name)
  66. }
  67. }
  68. }
  69. }
  70. }
  71. }