MoviaBox/MoviaBox/AppDelegate/AppDelegate+OpenApp.swift

97 lines
2.6 KiB
Swift

//
// AppDelegate+OpenApp.swift
// MoviaBox
//
// Created by on 2025/4/25.
//
import UIKit
#if canImport(FacebookCore)
import FacebookCore
#endif
extension SceneDelegate {
///URLAPP
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let url = URLContexts.first?.url else {
return
}
#if canImport(FacebookCore)
ApplicationDelegate.shared.application(UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation])
#endif
}
///UniversalLink app
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
guard let webpageURL = userActivity.webpageURL else { return }
handleOpenAppMessage(webpageURL: webpageURL)
}
}
extension SceneDelegate {
static var hasOpenMessage = false
func handleOpenAppMessage(webpageURL: URL?) {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self._handleOpenAppMessage(webpageURL: webpageURL)
}
}
private func _handleOpenAppMessage(webpageURL: URL?) {
//URL
var statUrlStr: String?
var data: [String : Any]?
if let pasteStr = UIPasteboard.general.string {
UIPasteboard.general.string = nil
let tempArr = pasteStr.components(separatedBy: "?")
let query = tempArr.last
let tempData = query?.urlQuryToDictionary()
if tempData?["short_play_id"] != nil {
data = tempData
statUrlStr = pasteStr
}
}
if Self.hasOpenMessage {
return
}
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
Self.hasOpenMessage = false
}
Self.hasOpenMessage = true
if data == nil {
data = webpageURL?.query?.urlQuryToDictionary()
statUrlStr = webpageURL?.absoluteString
}
if let urlStr = statUrlStr {//
SPStatAPI.requestStatW2a(data: urlStr)
}
guard let data = data else { return }
guard let model = SPOpenAppModel.deserialize(from: data) else { return }
guard let shortPlayId = model.short_play_id, shortPlayId.count > 0 else { return }
let vc = SPPlayerDetailViewController()
vc.shortPlayId = shortPlayId
SPAPPTool.topViewController()?.navigationController?.pushViewController(vc, animated: true)
}
}