VeloxDownloader 1.6

VeloxDownloader 1.6

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年12月
SwiftSwift 版本3.0
SPM支持 SPM

Nitin Sharma 维护。




VeloxDownloader

关于

VeloxDownloader 是一个易于使用、简洁、原生且功能强大的下载库,使用 Swift 3 开发。它简化了 urlsession 和下载任务的复杂实现,并提供了一个“一键”API,使您可以从互联网下载文件。

它是异步的、快速的、可维护的、高度可定制的,具有后台下载功能,并提供了内置 GUI 来显示和控制文件下载的进度。

看看它在行动📹

VeloxDownloader Demo

它能做什么? 💪🏼

  • 它有以下几种模式

    • 具有 UI

      • 从上面的演示中可以看到,VeloxDownloader 包含一个内置的下载视图,显示下载进度,并且目前有停止任何下载的能力。
      • 此 API 允许您控制是否为任何特定的文件下载启用后台下载。
    • 无 UI

      • 此 API 使用 Swift 闭包返回下载进度、剩余时间和完成状态。您可以使用这些信息满足您的要求,甚至构建自己的下载进度 GUI。
      • 此 API 还允许您启用或禁用任何特定文件下载的后台下载。

用法💻

  • 安装 :

    可以使用 CocoaPods 安装 VeloxDownloader。只需在 Podfile 中添加以下行,然后从您的终端运行 pod update

    pod 'VeloxDownloader', '~> 1.6'

  • 导入:

    一旦 pod 成功安装,打开 xcode workspace 项目。在您的 viewcontroller 中,通过以下文件导入 VeloxDownloader。

    import VeloxDownloader

  • Apple 的 App Transport Security 设置:

    确保您已将信息.plist 中的 App Transport Security 设置中的“允许任意加载”允许

    screen shot 2016-12-04 at 5 36 39 pm

  • 使用 VeloxDownloader 和 Velox 下载 UI:

    • recommendations 使用一个滚动视图来显示下载文件,并使用 VeloxDownloading 表视图。只需将 VeloxDownloader 视图设置为滚动视图如下所示:
    override func viewDidLoad() {
    
        super.viewDidLoad()
        let bundle  = Bundle(for: VeloxDownloaderList.self)
        let controller = VeloxDownloaderList(nibName: "VeloxDownloaderList", bundle: bundle)
        self.addChildViewController(controller)
    
        // scrollView is the outlet variable for your scroll view.
        // it will be used to display velox downloading UI.
        controller.view.frame = scrollView.frame
        self.view.addSubview(controller.view)
        controller.didMove(toParentViewController: self)
    
    }
    
    • 下一步:只需像下面这样使用代码 downloadFileWithVeloxDownloader。你只需要传递你想要下载的文件的URL,其余的将由VeloxDownloader处理。
    IBAction func downloadClicked(_ sender: Any) {
          let veloxDownloader = VeloxDownloadManager.sharedInstance
    
          let urlString = "URL OF YOUR FILE"
          let url = URL(string: urlString)
    
          veloxDownloader.downloadFileWithVeloxDownloader(
          withURL: url!, 
          name: url!.lastPathComponent,
          directoryName: nil, 
          friendlyName: nil, 
          backgroundingMode: false)        
      }
    
    • 启用后台模式:只需在上旨方法中将backgroundingMode参数传递为true。
    veloxDownloader.downloadFileWithVeloxDownloader(
    withURL: url!, 
    name: url!.lastPathComponent, 
    directoryName: nil, 
    friendlyName: nil, 
    backgroundingMode: true)
    

  • 使用没有Velox下载UI的VeloxDownloader:

    • 如果你对构建自己的UI来显示和跟踪你的下载进度感兴趣,可以使用以下闭包语法来做到这一点。显然,在这种模式下,你不需要像在上面的viewDidLoad()方法中那样设置VeloxDownloader的UI。
    @IBAction func downloadClicked(_ sender: Any) {
          let veloxDownloader = VeloxDownloadManager.sharedInstance
    
          let urlString = "URL OF YOUR FILE"
          let url = URL(string: urlString)
    
          let progressClosure : (CGFloat,VeloxDownloadInstance) -> (Void)
          let remainingTimeClosure : (CGFloat) -> Void
          let completionClosure : (Bool) -> Void
    
    
          progressClosure = {(progress,downloadInstace) in           
          print("Progress of File : \(downloadInstace.filename) is \(Float(progress))")        
          }
    
          remainingTimeClosure = {(timeRemaning) in          
              print("Remaining Time is : \(timeRemaning)")
          }
    
          completionClosure = {(status) in
              print("is Download completed : \(status)")
          }
    
    
          veloxDownloader.downloadFile(
          withURL: url!, 
          name: url!.lastPathComponent, 
          directoryName: nil, 
          friendlyName: nil, 
          progressClosure: progressClosure, 
          remainigtTimeClosure: remainingTimeClosure, 
          completionClosure: completionClosure, 
          backgroundingMode: false)       
      }
    
    • 启用后台模式:只需在上旨方法中将backgroundingMode参数传递为true。

如何检索下载的文件🗂

  • 所有下载的文件首先下载到临时目录,完成后将移动到应用程序的默认缓存目录。
  • 在应用程序关闭之前,你必须手动从缓存目录检索文件。你可以使用以下代码扫描您的应用程序缓存目录

        do{
           let cachesDirectoryURLPath = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0])
    
           let dir = try FileManager.default.contentsOfDirectory(atPath: cachesDirectoryURLPath.path)
           for file in dir{
           print("file is : \(file)")
            }
           }
           catch let error as NSError{
           print("error occured while trying to read cache dir \(error.localizedDescription)")
           }
    
  • 每次启动时,VeloxDownloader都会清除临时目录以避免任何文件命名冲突并保留系统空间。

  • 此外,如果缓存目录中已存在文件,VeloxDownloader将删除该文件并替换。
  • 如果在下载过程中停止了文件,VeloxDownloader将删除从临时和缓存目录中删除文件跟踪。

演示: 👏🏼

只需克隆(或下载)此git项目,然后使用Xcode 8(最好是iOS 10模拟器或设备)运行它

git clone https://github.com/nitinsh99/VeloxDownloader.git

贡献❤️

  • 如果你觉得运气好,请星标该项目或在这问题中提及你的项目名称。
  • 如果你发现了一个错误,或者你有一个功能请求,请创建一个独立的议题。
  • 如果你修复了一个错误,欢迎提交一个合并请求。

进行中...🍲

  • 我将致力于开发VeloxDownloadUI,以添加更多功能,如播放、暂停、继续。
  • 我将改进VeloxDownloadUI,让它看起来更美观。
  • 我将改进文件管理类,以便更多灵活地保存下载的文件,最好是通过绑定SQLLite和/或CoreDate来实现。
  • 我将开发一个文件管理的UI扩展,将使其更容易在下载文件列表中进行导航和控制。
  • 在后台模式启用时,将进行更多关于一般通知的工作。

感谢: 🙏🏼

  • 感谢背后出色的CocoaPods团队
  • 我从此处获取了灵感,这是一个为Obj-C编写的下载库,以此创建了VeloxDownloader。

许可