97 lines
2.6 KiB
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 {
|
|
|
|
///URL打开APP
|
|
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)
|
|
|
|
}
|
|
|
|
}
|