Veloria/Veloria/AppDelegate/AppDelegate+Open.swift
2025-06-06 17:50:28 +08:00

90 lines
2.6 KiB
Swift

//
// AppDelegate+Open.swift
// Veloria
//
// Created by on 2025/6/4.
//
import UIKit
import FacebookCore
extension SceneDelegate {
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let url = URLContexts.first?.url else {
return
}
//facebook
var result = ApplicationDelegate.shared.application(UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation])
if !result {
vp_handleOpenAppMessage(webpageURL: url)
}
}
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
guard let webpageURL = userActivity.webpageURL else { return }
vp_handleOpenAppMessage(webpageURL: webpageURL)
}
}
extension SceneDelegate {
static var hasOpenMessage = false
func vp_handleOpenAppMessage(webpageURL: URL?) {
guard VPNetworkReachabilityManager.manager.isReachable == true else { return }
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self._handleOpenAppMessage(webpageURL: webpageURL)
}
}
private func _handleOpenAppMessage(webpageURL: URL?) {
if Self.hasOpenMessage { return }
Self.hasOpenMessage = true
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
Self.hasOpenMessage = false
}
//URL
var statUrlStr: String? = webpageURL?.absoluteString
var data: [String : Any]? = webpageURL?.query?.vp_urlQuryToDictionary()
if let pasteStr = UIPasteboard.general.string {
UIPasteboard.general.string = nil
let tempArr = pasteStr.components(separatedBy: "?")
let query = tempArr.last
let tempData = query?.vp_urlQuryToDictionary()
if tempData?["short_play_id"] != nil {
data = tempData
statUrlStr = pasteStr
}
}
if let urlStr = statUrlStr {//
VPStatAPI.requestStatW2a(data: urlStr)
}
guard let data = data else { return }
guard let model = VPOpenAppModel.deserialize(from: data) else { return }
guard let shortPlayId = model.short_play_id, shortPlayId.count > 0 else { return }
let vc = VPDetailPlayerViewController()
vc.shortPlayId = shortPlayId
VPAppTool.topViewController?.navigationController?.pushViewController(vc, animated: true)
}
}