如何检测点播资源下载后的位置?

Posted

技术标签:

【中文标题】如何检测点播资源下载后的位置?【英文标题】:How to detect where the on demand resources are located after being downloaded? 【发布时间】:2015-11-20 10:40:54 【问题描述】:

我通过从以下两个答案中获取参考来在我的项目中实现应用细化:-

    https://***.com/a/33145955/988169 https://***.com/a/31688592/988169

on demand resources下载后如何检测到哪里?

【问题讨论】:

查看链接***.com/questions/33824528/…中的cmets 我正在输入类型。你能发布一个详细的答案吗? 【参考方案1】:

除非你在初始化资源请求时指定了一个bundle,否则资源默认放在主bundle中。例如,如果适合您的资源类型,您可以通过这种方式访问​​它们:

NSString *path= [[NSBundle mainBundle] pathForResource:@"movie" ofType:@"mp4"  ];

【讨论】:

这对我不起作用。我在项目的资源文件夹中有一个文件(不在资产中)。如果没有按需标签,我可以使用 pathForResource 方法获取它。一旦我向其添加按需标签 - 此方法不起作用(( 您可以尝试使用组而不是文件夹。这就是我最终这样做的方式,并且上述配置适用于该配置。 他特别说这是一个on demand资源——根据定义,它需要一个标签,将它放在与main不同的包中。 @Hashman 这正是我所说的,一个标记的 ODR 资源,上次我与 ODR 搏斗,如果你不告诉它一个不同的包名称,它会放在主包中 @Yogi 不,我只是在寻找适用于 ios 的 AWS S3 和集成的 AWS 开发工具包,在过去的 2.5 年里,它就像一个魅力【参考方案2】:

终于找到了,如何获取按需资源位置的路径:

func preloadResourcesWithTag(tagArray: Array<Any>, resourceName: String )

    let tags = NSSet(array: tagArray)
    let resourceRequest:NSBundleResourceRequest = NSBundleResourceRequest(tags: tags as! Set)
    resourceRequest.beginAccessingResources  (error) in
        OperationQueue.main.addOperation
            guard error == nil else 
                print(error!);
                return
            

                print("Preloading On-Demand Resources ")

            let _path1 = resourceRequest.bundle.path(forResource: "img2", ofType: "jpg")
            let img = UIImage(contentsOfFile: _path1!)

所以,点播资源的真正位置在这里:

/Users/admin/Library/Developer/CoreSimulator/Devices/250101ED-DFC5-424C-8EE1-FC5AD69C3067/data/Library/OnDemandResources/AssetPacks/com.ae.OfflineMapSwiftV1/1629348341761109610/com.##.OfflineMapSwiftV1.asset -pack-000000G31NNOJ.assetpack/img2.jpg

【讨论】:

【参考方案3】:

要扩展 saswanb 的答案,您使用的 pathForResource 必须与您添加到 ODR 标记的文件夹或文件名相匹配。如果将文件夹的引用添加到 ODR,则可以搜索该文件夹名称,但不能搜索该文件夹的内容。

NSString *path= [[NSBundle mainBundle] pathForResource:@"ODRFolder1" ofType:nil  ];

但如果将文件夹的内容添加到 ODR 标签中,则可以单独搜索每个文件。

【讨论】:

如果您想扩展某人的答案,您应该编辑他们的答案,而不是创建自己的答案

以上是关于如何检测点播资源下载后的位置?的主要内容,如果未能解决你的问题,请参考以下文章

集成后的 Xcode 6 Bot 将 .archive 文件下载到位置

iOS 9 的点播资源可以永久保留吗?

Flutter上线项目实战——腾讯点播直播下载

Flutter上线项目实战——腾讯点播直播下载

go module文件下载后的位置

您如何检测文件何时被放入 Windows 资源管理器?