From 828186049b7d246aea13ca28715671691a95dd66 Mon Sep 17 00:00:00 2001 From: bluesea <307723040@qq.com> Date: Tue, 21 May 2024 18:07:52 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E6=9C=BA=E5=9E=8B=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E7=BB=9F=E8=AE=A1;=202.=E4=BF=AE=E5=A4=8D=E4=BB=8E?= =?UTF-8?q?=E7=9B=B8=E5=86=8C=E9=80=89=E6=8B=A9=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=E8=BD=AC=E7=A0=81=E9=A1=B5=E9=9D=A2=E7=82=B9=E5=87=BB=E8=BD=AC?= =?UTF-8?q?=E7=A0=81=E4=BC=9A=E5=B4=A9=E6=BA=83=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?:=E4=B8=BB=E8=A6=81=E6=98=AF=E4=BB=8E=E9=82=A3=E4=B8=AA?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E5=8A=A0=E8=BD=BD=E6=96=87=E4=BB=B6=E4=BC=B0?= =?UTF-8?q?=E8=AE=A1=E6=9C=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SwiftProject/SwiftProject/AppDelegate.swift | 9 ++ .../Project/Controller/CCHomeController.swift | 34 ++++-- .../SwiftProject/Project/Util/ZZHHelper.swift | 108 ++++++++++++++++++ 3 files changed, 143 insertions(+), 8 deletions(-) diff --git a/SwiftProject/SwiftProject/AppDelegate.swift b/SwiftProject/SwiftProject/AppDelegate.swift index dfaa7ee..c525622 100644 --- a/SwiftProject/SwiftProject/AppDelegate.swift +++ b/SwiftProject/SwiftProject/AppDelegate.swift @@ -21,6 +21,7 @@ import FirebaseCore import AVFoundation import FacebookCore import FirebaseRemoteConfig + @main @@ -42,6 +43,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate { print("err: set audiosession:\(error)") } + if let modelName = UIDevice.current.shouldUploadphoneModel { + Analytics.logEvent("user_suitable", parameters: ["device":modelName]) + } + + if let isIphone15 = UIDevice.current.isIphone15 { + Analytics.logEvent("user_15p", parameters: ["device":isIphone15]) + } + SVProgressHUD.setDefaultStyle(.dark) Analytics.logEvent("user_launch", parameters: ["type":"new"]) diff --git a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift index 55a1fe4..9313f96 100644 --- a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift @@ -530,6 +530,25 @@ extension CCHomeController: TZImagePickerControllerDelegate,UINavigationControll self.navigationController?.pushViewController(vc, animated: true) } + private func getVideoURL(from asset: PHAsset, completion: @escaping (URL,AVURLAsset) -> Void) { + if asset.mediaType == .video { + let requestOptions = PHVideoRequestOptions() + requestOptions.isNetworkAccessAllowed = true + //异步的 + PHImageManager.default().requestAVAsset(forVideo: asset, options: requestOptions) { (avAsset, _, _) in + if let avAsset = avAsset as? AVURLAsset { + let mediaURL = avAsset.url + DispatchQueue.main.async { + completion(mediaURL,avAsset) + } + + } + } + } else { + + } + } + func gotoVideoTransformVC(url:URL?,asset:PHAsset?) { let vc = VRVideoTransformController() @@ -596,15 +615,14 @@ extension CCHomeController: TZImagePickerControllerDelegate,UINavigationControll let videoURL = info[.mediaURL] as? URL print("选择视频 Selected video URL: \(String(describing: videoURL))") - gotoVideoTransformVC(url: videoURL,asset: info[.phAsset] as? PHAsset) + if let pha = (info[.phAsset] as? PHAsset) { + getVideoURL(from: pha) {[weak self] url, avasset in + self?.gotoVideoTransformVC(url: url,asset: pha) + } + } + //在转码时,直接调用下面的videoURL操作后面的转码,在vw那里会crash +// gotoVideoTransformVC(url: videoURL,asset: info[.phAsset] as? PHAsset) - // sourceVideoURL = videoURL - // heroAsset1 = AVAsset(url: sourceVideoURL!) - // heroAsset = heroAsset1 - // if(!isSpatialVideo(asset: heroAsset!)){ - // showTextAlert(title: "提示", message: "当前视频不是空间视频") - // } - // play() break default: print("未知的媒体类型") diff --git a/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift b/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift index 5b8b403..74ff6e5 100644 --- a/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift +++ b/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift @@ -231,5 +231,113 @@ public extension UIDevice { default: return identifier } } + + + + + + + + + var shouldUploadphoneModel: String? { + var systemInfo = utsname() + uname(&systemInfo) + let machineMirror = Mirror(reflecting: systemInfo.machine) + let identifier = machineMirror.children.reduce("") { identifier, element in + guard let value = element.value as? Int8 , value != 0 else { return identifier } + return identifier + String(UnicodeScalar(UInt8(value))) + } + + switch identifier { + case "iPod5,1": return nil//"iPod Touch 5" + case "iPod7,1": return nil//"iPod Touch 6" + case "iPhone3,1", "iPhone3,2", "iPhone3,3": return nil//"iPhone 4" + case "iPhone4,1": return nil//"iPhone 4s" + case "iPhone5,1", "iPhone5,2": return nil//"iPhone 5" + case "iPhone5,3", "iPhone5,4": return nil//"iPhone 5c" + case "iPhone6,1", "iPhone6,2": return nil//"iPhone 5s" + case "iPhone7,2": return nil//"iPhone 6" + case "iPhone7,1": return nil//"iPhone 6 Plus" + case "iPhone8,1": return nil//"iPhone 6s" + case "iPhone8,2": return nil//"iPhone 6s Plus" + case "iPhone8,4": return nil//"iPhone SE (1st generation)" + case "iPhone9,1", "iPhone9,3": return nil//"iPhone 7" + case "iPhone9,2", "iPhone9,4": return nil//"iPhone 7 Plus" + case "iPhone10,1", "iPhone10,4": return nil//"iPhone 8" + case "iPhone10,5", "iPhone10,2": return nil//"iPhone 8 Plus" + case "iPhone10,3", "iPhone10,6": return nil//"iPhone X" + case "iPhone11,2": return "iPhone XS" + case "iPhone11,4", "iPhone11,6": return "iPhone XS MAX" + case "iPhone11,8": return nil//"iPhone XR" + case "iPhone12,1": return "iPhone 11" + case "iPhone12,3": return "iPhone 11 pro" + case "iPhone12,5": return "iPhone 11 Pro Max" + case "iPhone12,8": return nil//"iPhone SE (2nd generation)" + case "iPhone13,1": return "iPhone 12 mini" + case "iPhone13,2": return "iPhone 12" + case "iPhone13,3": return "iPhone 12 Pro" + case "iPhone13,4": return "iPhone 12 Pro Max" + case "iPhone14,4": return nil//"iPhone 13 mini" + case "iPhone14,5": return nil//"iPhone 13" + case "iPhone14,2": return "iPhone 13 Pro" + case "iPhone14,3": return "iPhone 13 Pro Max" + case "iPhone14,6": return nil//"iPhone SE (3rd generation)" + case "iPhone14,7": return nil//"iPhone 14" + case "iPhone14,8": return nil//"iPhone 14 Plus" + case "iPhone15,2": return "iPhone 14 Pro" + case "iPhone15,3": return "iPhone 14 Pro Max" + case "iPhone15,4": return nil//"iPhone 15" + case "iPhone15,5": return nil//"iPhone 15 Plus" + case "iPhone16,1": return "iPhone 15 Pro" + case "iPhone16,2": return "iPhone 15 Pro Max" + + + case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return nil//"iPad 2" + case "iPad3,1", "iPad3,2", "iPad3,3": return nil//"iPad 3" + case "iPad3,4", "iPad3,5", "iPad3,6": return nil//"iPad 4" + case "iPad6,11", "iPad6,12": return nil//"iPad 5" + case "iPad7,5", "iPad7,6": return nil//"iPad 6" + case "iPad7,11", "iPad7,12": return nil//"iPad 7" + case "iPad11,6", "iPad11,7": return nil//"iPad 8" + case "iPad12,1", "iPad12,2": return nil//"iPad 9" + + case "iPad4,1", "iPad4,2", "iPad4,3": return nil//"iPad Air" + case "iPad5,3", "iPad5,4": return nil//"iPad Air 2" + case "iPad11,3", "iPad11,4": return nil//"iPad Air 3" + case "iPad13,1", "iPad13,2": return nil//"iPad Air 4" + case "iPad13,16", "iPad13,17": return nil//"iPad Air 5" + + case "iPad2,5", "iPad2,6", "iPad2,7": return nil//"iPad Mini" + case "iPad4,4", "iPad4,5", "iPad4,6": return nil//"iPad Mini 2" + case "iPad4,7", "iPad4,8", "iPad4,9": return nil//"iPad Mini 3" + case "iPad5,1", "iPad5,2": return nil//"iPad Mini 4" + case "iPad11,1", "iPad11,2": return nil//"iPad Mini 5" + case "iPad14,1", "iPad14,2": return nil//"iPad Mini 6" + case "iPad6,7", "iPad6,8", "iPad6,3", "iPad6,4", "iPad7,1", "iPad7,2", "iPad7,3", "iPad7,4", "iPad8,1", "iPad8,2", "iPad8,3", "iPad8,4", "iPad8,5", "iPad8,6", "iPad8,7", "iPad8,8", "iPad8,9", "iPad8,10", "iPad8,11", "iPad8,12": return nil + case "AppleTV5,3": return nil + case "i386", "x86_64": return nil + default: return nil + } + } + + + + + + var isIphone15: String? { + var systemInfo = utsname() + uname(&systemInfo) + let machineMirror = Mirror(reflecting: systemInfo.machine) + let identifier = machineMirror.children.reduce("") { identifier, element in + guard let value = element.value as? Int8 , value != 0 else { return identifier } + return identifier + String(UnicodeScalar(UInt8(value))) + } + + switch identifier { + case "iPhone16,1": return "iPhone 15 Pro" + case "iPhone16,2": return "iPhone 15 Pro Max" + default: return nil + } + } }