问题标签 [on-demand-resources]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2017 浏览

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

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

  1. https://stackoverflow.com/a/33145955/988169
  2. https://stackoverflow.com/a/31688592/988169

下载后如何检测它们的on demand resources位置?

0 投票
0 回答
158 浏览

objective-c - 如何获得按需资源下载中完成的部分进度?

我想获得分数的进度,但我得到的是请求开始时的 0 和下载结束时的 1。这是我写的代码

谁能告诉我如何以分数确定地取得进展?

0 投票
2 回答
2232 浏览

ios - 如何在开发期间托管来自 xcode 的按需资源

我正在尝试为我的 iOS 应用程序实现按需资源下载。这些文件暗示了 xcode 可以在开发过程中为您托管资产包的事实。我的问题是如何启用它?是否有另一种方法可以在开发过程中测试按需资源下载。“在产品包中嵌入资产包”构建设置是否相关?这是文档中提到 xcode 托管的地方: on demand docs

0 投票
1 回答
890 浏览

ios - NSBundleResourceRequest 捆绑路径

[更新在问题的结尾]

我曾经在我的应用程序中播放一些音频文件。

我曾经将文件存储在应用程序中,但后来我转移到On Demand ResourcesNSBundleResourceRequest.

IBAction 要播放一个随机文件,但自从我移到 后ODR,它就无法正常工作了。我唯一改变的是NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];(第3行)

dirContents看起来像:

在此处输入图像描述

当它应该包含 mp3 文件时。

我在做什么错bundleRoot

viewDidload的是

我实际上有另一种方法来播放选定的音频(不是随机的)

它工作正常。

所以有一个问题,bundleRoot不是我的文件所在的位置。

[更新]

我确实做到了

它几乎可以工作,但总是在播放目录中的第一个音频。

0 投票
2 回答
149 浏览

ios - 还押资源 - 预计时间(以及如何根据下载进度显示警报)

有没有办法获得On Demand Resources下载的预计时间?

我想在全部下载之前显示警报。

现在我有

但是下载完成后警报不会自动消失,它会查看警报的持续时间

0 投票
1 回答
729 浏览

ios - 调试为什么 SKScene init(fileNamed:) 返回 nil

TLTR:

问题: SKScene子类的init(fileNamed:)回报nil

原因:第二.sks次初始化调用时文件不存在。该问题在某种程度上与ODR实施和/或行为有关。

描述:

SpriteKit. 我SKScene的子类的init(fileNamed:)回报nil。我试图理解“为什么?” 如何?” 调试此问题。

我的初始化SKScene子类的代码:

有几点需要注意:

  1. 此代码在运行时的某个时间点起作用,但在其他时间点不起作用。
  2. 当通过 Xcode 构建目标时,转到 Products -> AppName.app,右键单击“Show in Finder”,没有Level1.sks。也许没关系,因为应用程序使用ODRLevel1.sks标有“Level1”标签,即使它位于初始安装标签中
  3. 当断点设置为let sceneType:...line 时,我可以通过相应的子类和文件名轻松创建其他游戏场景,但expression TBTLevelScene(fileName:"Level1")返回nil.
  4. 我试图检查Level1.sks主捆绑包中是否存在,但对于所有场景,下面的代码总是说“文件不可用”,所以这种方法似乎是错误的。
  5. 游戏的场景加载架构由DemoBots 示例代码驱动。您可以在 中看到类似的方法LoadSceneOperation.swift。但是,那里的初始化在所有情况下都可以正常工作。

基于此答案,我用来检查“Level1”或“Level1.sks”的代码是否存在:

更新:

Michael Dautermann提供的检查文件的方法确实有效,它证明了原因:在第二次尝试加载它时Level1.sks存在。

项目中的Level1.sks文件被添加到“Copy Bundle Resources”区域并具有“Level1”ODR 标签。该标签位于Initial Install Tags预取组中。

ORD 实现中肯定存在一些错误,它会在不需要时释放资源 ( Level1.sks),并且不会在需要时再次加载它。我会继续努力弄清楚。(似乎到目前为止,SO 社区与此无关)

0 投票
1 回答
222 浏览

ios - 在 iOS 中管理大量文件的最佳方式

我的应用程序中将包含大量 mp3 文件。现在,这就是我所做的:

  • 使用按需资源,这样文件就不会影响应用程序的大小;

  • 首次启动时:

    • 如果用户连接到WiFi,下载所有文件并将它们存储在应用程序文档目录中;
    • 如果用户没有连接到 WiFi,请让他下载或稍后再下载。

现在我的问题是:

例如,如果总文件大小超过 300mb,这将是一个问题,因为用户可能会因为空间不足而删除应用程序。我该如何解决这个问题?

我在想:

  • 在线存储我的文件并播放,但是每次用户想要播放它们时,他都会使用移动数据。或者,如果用户没有数据连接或者他在没有信号的地方,他将无法使用该应用程序;

  • 将文件压缩为 zip,然后在用户想要播放文件时解压缩并再次压缩;

  • 询问用户他想下载哪些文件,如果他想下载更多,则删除它们。

0 投票
1 回答
134 浏览

ios - 根据 On Demand Resources 标签启用/禁用按钮

我有一些按钮链接到IBAction播放声音的按钮。

我的文件是用On Demand Resources组织的,我有 3 个标签:

  • 1级
  • 2级
  • 3级

所以我想要实现的是:

如果用户处于 1 级,他将只能播放带有level1标签的文件。如果他单击level2标签音频,则会出现警报。

如何检查文件是否具有特定标签?

0 投票
0 回答
708 浏览

ios - 按需资源清除

我正在考虑在我的一个应用程序中采用按需资源。它将包含大约 30 个视频,大多数用户只会观看一次。因此,它似乎是按需资源的不错选择。该应用程序的生命周期预计约为一周,因此如果系统在用户完成它并忘记删除它之后清除其资产,那是很好的。

但是,我显然希望在应用程序仍在使用时保留一些可用的资产。根据官方文档

当任何请求不再保留所有相关标签时,资产包就有资格被清除。与标签关联的资源可能会在设备上保留一段时间,然后才会被清除,包括跨应用程序启动。

此描述非常模糊,因为它没有提供足够的提示来说明下载后何时可以清除资产。是否仅在设备内存不足时才会发生?或者即使设备有很多可用空间,系统也会尝试始终优化可用内存?

如果有人能从他们的经验中判断以上哪一项是正确的,我将不胜感激。就我的应用而言,上述不确定性可能导致两种情况:

1) 一些视频将被内存不足的用户清除。这很好,因为如果我将所有视频与应用程序捆绑在一起,这些用户将无法下载应用程序,所以这种不便是完全可以容忍的。

2) 在 128GB 设备上有 64GB 可用空间的用户将无法访问某些视频,必须重新下载。这将导致 ODR 的表现比简单地将所有视频捆绑在一起更差,我想避免这种情况。

我观看了有关 ODR 的 WWDC 视频,但它也没有给出上述问题的答案......

0 投票
1 回答
575 浏览

swift - 按需资源“0资产包”

我最近开始在我的应用程序中实施按需资源。当我从 Xcode 将应用程序部署到我的手机时,一切都很好。但是当我将二进制文件上传到 iTunes Connect 时,它会显示“0 Asset Packs”:

在此处输入图像描述

Xcode 中的资产标签看起来不错:

在此处输入图像描述

资产的构建设置如下所示:

资产

我正在通过 TestFlight 进行测试,在应用程序中我收到一条错误消息,提示“请求的应用程序数据不存在”。

我尝试了以下方法:

  • 删除/读取 Xcode 中的资源标签
  • 将 3 个略有不同的二进制文件上传到商店
  • 关闭/开启 beta 测试
  • 删除/重新添加测试人员

感谢所有帮助!