下载按需资源包后,NSBundle PathsForResources 返回 null

问题描述

我的团队在使用 Apple 的按需资源框架时遇到了一个非常奇怪的问题。这是一个随机发生的问题,用户将成功下载我们的一个资源,但当我们尝试通过 NSBundle.PathsForResources() 访问该资源的路径时,它没有出现。当用户使用特定资源标签进入此状态时,我们还没有找到解决问题的方法。每次访问应用程序的这一部分时,我们的代码都会尝试重新获取受影响的资源标签,因此这不是不重新获取的问题,我们肯定会获取并成功下载。奇怪的是,卸载应用程序并重新安装甚至无法修复这种损坏状态。人们会假设在删除应用程序和在 iOS 上重新安装之间没有任何影响,但这里似乎并非如此。此外,这种情况发生在看似随机的资产上,某些按需资源包没有受到影响的模式,在所有情况下都不同。一旦资源标签被“砖化”,它就会保持这种状态。任何想法可能导致此问题/我们可以尝试解决此问题吗?

下载代码

        // create and initialize new resource request
    public async Task CreateODRResourceRequest(string tag)
    {
        if (string.IsNullOrWhiteSpace(tag))
        {
            throw new ArgumentNullException(nameof(tag));
        }

        // Create resource request
        var request = new NSBundleResourceRequest(new[] { tag });

        // Set highest loading priority
        request.LoadingPriority = NSBundleResourceRequest.LoadingPriorityUrgent;

        _currentResourceRequest = request;

        var resourcesAlreadyAvailable = await request.ConditionallyBeginAccessingResourcesAsync();

        // ensure we only download resource if it's not already on the device
        if (!resourcesAlreadyAvailable)
        {
            await request.BeginAccessingResourcesAsync();
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)