問題1:微信分享來的apk文件后綴會改為apk.1
例:
file:///private/var/mobile/Containers/Data/Application/190C4CCD-63E4-5EEB-B70F-55C565F09A64/Documents/Inbox/xxx.apk.1
解決方式:創(chuàng)建一個以apk結(jié)尾的同名文件澜薄,將分享來的數(shù)據(jù)寫入到新文件內(nèi)進行后續(xù)處理怒竿。
問題2:微信分享來數(shù)據(jù)會被存儲,導致占用內(nèi)存越來越高俊啼。
每次使用完后刪除掉原文件。
結(jié)合上面兩個問題畸写,代碼示例:
將類似:文件名.apk.1 , 文件名.apk-1.1,文件名.apk-10.1,這類結(jié)尾的路徑改后綴名為.apk
func convertExtension(for path: String) -> String {
let pattern = "(\\.apk)(-|\\.)[0-9]+(\\.[0-9]+)?$"
let replacement = ".apk"
let newPath = path.replacingOccurrences(of: pattern, with: replacement, options: .regularExpression)
return newPath
}
//openUrl為分享進來的路徑
let document = UIDocument.init(fileURL: url)
var newUrl = openUrl.deleteLastPathComponent()
let endStr = convertExtension(for: document.fileURL.lastPathComponent)
newUrl = newUrl.appendingPathComponent(endStr)
let fileManager = FileManager.default
do{
try fileManager.copyItem(at: url, to: newUrl)
}catch{
print("外部文件點擊error2")
return false
}
do{
try fileManager.removeItem(at: openUrl)
}catch{
print("刪除緩存文件")
return false
}
//后續(xù)以newUrl來進行后面的操作