ในการดาวน์โหลดวิดีโอจาก URL อย่างรวดเร็ว เราจำเป็นต้องดำเนินการสองสามขั้นตอนโดยคำนึงถึงบางสิ่งเป็นหลัก
ข้อควรสังเกตคือ
-
เราจะใช้อินเทอร์เน็ตเพื่อดาวน์โหลดวิดีโอ ดังนั้น เราจึงต้องอนุญาตการอนุญาตสำหรับการรักษาความปลอดภัยในการขนส่งแอปใน Info.plist
-
เราจำเป็นต้องบันทึกวิดีโอที่ดาวน์โหลดไปยังแอป Photos จึงต้องมีการอนุญาตรูปภาพ
-
ควรดาวน์โหลดวิดีโอในพื้นหลังเสมอ เนื่องจากอาจทำให้เราไม่สามารถใช้แอปได้หากดาวน์โหลดบนเบื้องหน้า
ตอนนี้ เราจะใช้รหัสด้านล่างเพื่อบันทึกวิดีโอจากลิงก์สุ่มในอุปกรณ์ของเรา คุณจะต้องอนุญาตรูปภาพขณะเรียกใช้แอป
ขั้นแรกให้เพิ่มรหัสต่อไปนี้ในไฟล์ info.plist ของคุณ
<key>NSPhotoLibraryUsageDescription</key> <string>saves</string> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
หลังจากนี้ ให้เพิ่มฟังก์ชันที่แสดงด้านล่างและเรียกใช้ภายในเมธอด viewDidLoad ของคลาสของคุณ
ตอนนี้ viewDidLoad ของคุณควรมีลักษณะดังนี้ -
override func viewDidLoad() { super.viewDidLoad() self.downloadVideo() }
ด้านล่างนี้คือโค้ดสำหรับฟังก์ชันดาวน์โหลดวิดีโอ
func downloadVideo() { let sampleURL = "https://commondatastorage.googleapis.com/gtv-videosbucket/sample/ElephantsDream.mp4"DispatchQueue.global(qos: .background).async { if let url = URL(string: sampleURL), let urlData = NSData(contentsOf: url) { let galleryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]; let filePath="\(galleryPath)/nameX.mp4" DispatchQueue.main.async { urlData.write(toFile: filePath, atomically: true) PHPhotoLibrary.shared().performChanges({ PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: URL(fileURLWithPath: filePath)) }) { success, error in if success { print("Succesfully Saved") } else { print(error?.localizedDescription) } } } } } }
เนื่องจากไม่มีองค์ประกอบ UI อื่นบนหน้าจอจึงไม่คาดว่าจะเห็นผลลัพธ์ใด ๆ บนหน้าจอ เฉพาะคำสั่งการพิมพ์เท่านั้นที่จะแสดงในเอาต์พุต และหากทำสำเร็จ วิดีโอจะถูกบันทึกลงในภาพถ่ายซึ่งสามารถเห็นได้ในแอพรูปภาพ .