ในการดาวน์โหลดวิดีโอจาก 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 = "http://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 อื่นบนหน้าจอจึงไม่คาดว่าจะเห็นผลลัพธ์ใด ๆ บนหน้าจอ เฉพาะคำสั่งการพิมพ์เท่านั้นที่จะแสดงในเอาต์พุต และหากทำสำเร็จ วิดีโอจะถูกบันทึกลงในภาพถ่ายซึ่งสามารถเห็นได้ในแอพรูปภาพ .