如何在iOS开发中使用按需资源访问资源(不是教程,而是共享材料)

什么是按需资源? 我们为什么需要它们? 我在寻找最小化iOS应用程序大小的方法时发现的这些问题的答案。

它是如何工作的? 很好地回答这个问题,对于我来说,给出一个测试用例来解释它是如何工作的将更加简单。

假设有一个游戏开发人员想要在iOS平台上制作游戏。 游戏包含5个阶段,每个阶段都有自己的资产。 这使应用变得with肿,资产增加了应用的大小,并延长了下载时间。

按需资源可以通过使资产与用户下载的应用程序捆绑包分开来帮助减小应用程序的大小。 这意味着用户可以下载较小的应用程序大小,并且开发人员可以自由地添加可以在应用程序内部使用的新资产,而无需担心应用程序大小。

怎么运行的

按需资源与标记资产一起使用,这些资产要与应用程序包保持隔离,作为识别资产的关键。 当需要资产时,操作系统将根据标签下载资产,并在需要时将其保留。 不再需要时,资产将自动清除。

按需资源具有3种类型的标签:

  • 初始安装标签 ,这是在下载应用程序时下载的标签。 带有此标签的资产可能会影响appstore上的下载大小。
  • Prefetched Order Tags ,这是在安装应用程序后下载的标签,但我们不确定确切何时下载资产。
  • “仅下载按需标记” ,即在代码请求它们时正在下载的标记。

下载资产时,建议设置其下载优先级,以帮助用户体验。

如何访问资源

您应该做的第一件事是获取要访问的所有资源标签

 让标签= NSSet(array:[“ tags1”,“ tags2”]) 
//设置要设置的数组
守卫让setTags =标签为? 设置 else {
返回
}

其次,您应该检查资源是否可用

 让resourceRequest:NSBundleResourceRequest = NSBundleResourceRequest(tags:setTags)//检查资源是否已经可用 
resourceRequest.conditionallyBeginAccessingResources {(resourceAvailable)在
如果resourceAvailable {
//处理已经可用的资源
}其他{
//下载资源
}
}

如果资源不可用,您应该下载资源,但是在此之前,您可以设置加载优先级,以便可以尽快下载资源,

  resourceRequest.loadingPriority = 0.8 

您可以使用介于0到1之间的Double。


设置加载优先级后,您应该下载资源

  resourceRequest.beginAccessingResources {(如果发生错误,则为错误!= nil { 
//处理错误
}其他{
//处理资源
}
}

参考文献

–苹果开发人员文档(https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/index.html)

– ray wenderlich(https://www.raywenderlich.com/520-on-demand-resources-in-ios-tutorial)