需要添加直播接口
This commit is contained in:
119
uni_modules/tuikit-atomic-x/utssdk/app-ios/swift/LogUpload.swift
Normal file
119
uni_modules/tuikit-atomic-x/utssdk/app-ios/swift/LogUpload.swift
Normal file
@@ -0,0 +1,119 @@
|
||||
//
|
||||
// LogUpload.swift
|
||||
// Created by reneechai on 2025/9/17.
|
||||
//
|
||||
import UIKit
|
||||
import Foundation
|
||||
import DCloudUTSFoundation
|
||||
|
||||
public class FileModel {
|
||||
var fileName: String
|
||||
var filePath: String
|
||||
|
||||
init(fileName: String, filePath: String) {
|
||||
self.fileName = fileName
|
||||
self.filePath = filePath
|
||||
}
|
||||
}
|
||||
|
||||
public class LogUpload {
|
||||
public static let shared = LogUpload()
|
||||
private var fileModelArray: [FileModel] = []
|
||||
|
||||
public func shareLog(_ row: Int){
|
||||
if row < self.fileModelArray.count {
|
||||
let fileModel = self.fileModelArray[row]
|
||||
let logPath = fileModel.filePath
|
||||
let shareObj = URL(fileURLWithPath: logPath)
|
||||
/// file:///var/mobile/Containers/Data/Application/3173F3A2-91A4-44B3-AC13-DBBD02C2DDBE/Documents/log/LiteAV_C_20250820-19243.clog
|
||||
// print("LogUpload: shareObj: \(shareObj)")
|
||||
console.log("LogUpload, shareObj:", shareObj)
|
||||
|
||||
let activityView = UIActivityViewController(activityItems: [shareObj], applicationActivities: nil)
|
||||
guard let curVC = getCurrentWindowViewController() else { return }
|
||||
curVC.present(activityView, animated: true) {}
|
||||
}
|
||||
}
|
||||
|
||||
public func fetchLogfileList() -> [FileModel] {
|
||||
var fileArray: [FileModel] = []
|
||||
guard let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
|
||||
else { return []}
|
||||
|
||||
let logPath = (documentsPath as NSString).appendingPathComponent("log")
|
||||
guard let libraryPath = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true).first
|
||||
else { return []}
|
||||
|
||||
let cachePath = (libraryPath as NSString).appendingPathComponent("Caches/com_tencent_imsdk_log")
|
||||
let liteAVSDKClogFiles = getFilesFromDirectory(atPath: logPath, withExtension: ".clog")
|
||||
fileArray += liteAVSDKClogFiles
|
||||
let liteAVSDKXlogFiles = getFilesFromDirectory(atPath: logPath, withExtension: ".xlog")
|
||||
fileArray += liteAVSDKXlogFiles
|
||||
let imXlogFiles = getFilesFromDirectory(atPath: cachePath, withExtension: ".xlog")
|
||||
fileArray += imXlogFiles
|
||||
|
||||
fileModelArray = fileArray
|
||||
console.log("LogUpload, fileModelArray count:", fileModelArray.count)
|
||||
// 打印详细日志
|
||||
// printLogFile()
|
||||
return fileModelArray
|
||||
}
|
||||
|
||||
private func printLogFile(){
|
||||
if fileModelArray.isEmpty {
|
||||
print("LogUpload: fileModelArray 为空,未找到任何日志文件")
|
||||
} else {
|
||||
print("LogUpload: fileModelArray 共 \(fileModelArray.count) 个日志文件:")
|
||||
fileModelArray.enumerated().forEach { index, file in
|
||||
print("LogUpload: :\(file.fileName)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 解析日志文件夹
|
||||
private func getFilesFromDirectory(atPath path: String, withExtension fileExtension: String) -> [FileModel] {
|
||||
let fileManager = FileManager.default
|
||||
var files: [FileModel] = []
|
||||
|
||||
do {
|
||||
let contents = try fileManager.contentsOfDirectory(atPath: path)
|
||||
for fileName in contents {
|
||||
if fileName.hasSuffix(fileExtension) {
|
||||
let filePath = (path as NSString).appendingPathComponent(fileName)
|
||||
let file = FileModel(fileName: fileName, filePath: filePath)
|
||||
files.append(file)
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
print("Error: \(error.localizedDescription)")
|
||||
}
|
||||
|
||||
return files
|
||||
}
|
||||
|
||||
/// 获取 iOS 分享面板
|
||||
private func getCurrentWindowViewController() -> UIViewController? {
|
||||
var keyWindow: UIWindow?
|
||||
for window in UIApplication.shared.windows {
|
||||
if window.isMember(of: UIWindow.self), window.isKeyWindow {
|
||||
keyWindow = window
|
||||
break
|
||||
}
|
||||
}
|
||||
guard let rootController = keyWindow?.rootViewController else {
|
||||
return nil
|
||||
}
|
||||
func findCurrentController(from vc: UIViewController?) -> UIViewController? {
|
||||
if let nav = vc as? UINavigationController {
|
||||
return findCurrentController(from: nav.topViewController)
|
||||
} else if let tabBar = vc as? UITabBarController {
|
||||
return findCurrentController(from: tabBar.selectedViewController)
|
||||
} else if let presented = vc?.presentedViewController {
|
||||
return findCurrentController(from: presented)
|
||||
}
|
||||
return vc
|
||||
}
|
||||
let viewController = findCurrentController(from: rootController)
|
||||
return viewController
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user