问题标签 [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 投票
1 回答
143 浏览

ios - 按需资源如何“离开捆绑包”并到达苹果服务器?

我正在研究需求资源中的苹果,但我对实际流量感到困惑。

我的应用程序有一个名为“file1”的文件它有一个按需资源标签“file1”当我运行应用程序并打开磁盘调试器时,我可以看到标签“file1”的状态为未下载。

我的问题是,这是如何工作的?

当我构建我的应用程序时,file1 被排除在捆绑包中并自动上传到苹果服务器吗?

0 投票
1 回答
221 浏览

ios - Cordova - ios 按需资源

尝试在 cordova 项目中使用 ios 按需资源,并且需要向 ios 项目添加一个文件夹,我可以将其标记为属于目标,然后添加一个按需资源标签。

我可以通过使用“添加文件”并添加文件夹在生成的 xcode 项目中执行此操作。然后在文件检查器中,检查所需的目标,然后在“按需资源标签”文本框中添加我的标签,例如“MY_TAG”。

显然,通过进行cordova构建然后手动添加和标记文件夹来生成项目是不可行的,但我不知道如何添加文件夹并使用各种插件、钩子等标记它。我尝试将文件夹移动到使用自定义钩子(after_prepare)的 ios 项目的根目录,该文件夹位于生成的 xcode 项目中,但我仍然必须手动添加它并标记它。

看来科尔多瓦对我添加与 www 目录处于同一级别的文件夹并不满意。我需要一个目录结构:

如果我确实在 www 文件夹下添加了文件夹(作为子文件夹),则在 xcode 项目的文件检查器中没有将其与目标关联并提供按需资源标签的选项。事实上,这适用于您在 xcode 项目中创建的任何子文件夹 - 它不能标记为按需资源。

任何帮助将非常感激。除了单个文件的简单用例之外,似乎没有多少人在使用按需资源。

0 投票
2 回答
1250 浏览

ios - 在 iOS 上按需下载资源没有错误,但不可用

我们的应用程序每次都能在我们测试过的所有 iOS 设备上顺利运行(从 xcode/adhoc 生产/调试中全新安装或更新,我们已经全部尝试过)。但它在应用程序审查中被拒绝,因为它似乎按需资源永远不会变得可用,即使资源的下载完成而没有错误。

我们正在访问相机回调的阻塞区域中的资源。如果资源可用,我们继续使用它,否则我们只在下载完成后执行 beginAccessingResourcesWithCompletionHandler() 和免费回调块。问题是应用程序审阅者说它下载(有一个进度条),然后一遍又一遍地要求重新下载。为什么刚下载成功就不可用(注意没有错误)?

这也不是存储不足的问题。我们已经涵盖并测试了这一点。此外, beginAccessingResourcesWithCompletionHandler() 返回没有错误。

0 投票
0 回答
186 浏览

macos - 如何在 MacOS Catalyst 应用程序中启用按需资源

NSBundleResourceRequest 的文档说它在 MacOS Catalyst 中受支持,但是当我将包含按需资源的应用程序上传到 Mac App Store 时,App Store Connect 在 MacOS 构建页面上显示“On Demand Resources No”。

该应用程序的 iOS 版本运行良好,App Store Connect 显示“按需资源是(156 个资产包)”。

是否有特殊设置可以让他们为 MacOS Catalyst 应用程序工作?

0 投票
1 回答
779 浏览

ios - iOS On Demand Resource 错误“资产 URL 已过期”(AssetErrorDomain 代码 6)是什么意思?

从 iOS 13.0 开始,我一直在用户日志中看到一个新错误。错误被传递给NSBundleRequest.beginAccessingResources的完成处理程序。

该错误的域为“AssetErrorDomain”,代码为 6,NSDebugDescription 为“Asset URL has expired”。并非所有用户都遇到此问题,并且我无法在本地重现它。

我真的不明白这个错误代表什么,我应该如何响应它,或者用户如何最终处于这种状态。我有一位用户向我报告说,删除并重新安装该应用程序是他们能够解决问题的唯一方法。

有没有人在他们自己的应用程序中看到过这个问题?

更新

我向 Apple 提交了 TSI,他们的回复如下:

我最近看到开发人员弹出这个问题。我们目前没有解决方法,但我们正在努力解决这个问题。

我还提交了一个雷达 (FB7416830),它被标记为“最近的类似报告:超过 10 个”。因此,这显然是一个普遍存在的问题。

0 投票
0 回答
94 浏览

ios - iOS On Demand 资源不包括 PNG 图像

我在 iOS 上使用 onDemandResources (ODR) 时遇到问题。

我将项目的所有资源都添加到了“TEST”标签中,但 PNG 文件也保留在 .ipa Payload 文件夹中。

测试标签

也就是说,如果我导出存档并检查 ipa 文件内部,则在 Payload 文件夹中有应该是 onDemand 的 PNG 资源。

其他类型的文件不会发生这种情况:jpg、xml、mp3 等。

PNG 文件也正确插入到 onDemandResources 文件夹中的 .assetpack 文件中

.ipa 文件负载

使用 XCode 11.2.1 和 MacOS 10.14.6

我尝试使用 SceneKitAssets 文件夹,这样 PNG 不会插入 IPA 的有效负载中,而仅插入 onDemandResources 文件夹中。但是这个解决方案对我的项目来说并不方便,它使用了各种文件夹中的共享资源。

谢谢

0 投票
0 回答
51 浏览

ios - apple On Demand Resource 的尺寸说明?

根据苹果文档,应用商店中存储的应用程序按需资源的总大小不超过 20GB。但是由于资源是由苹果特定版本维护的,所以这个 20GB 的总大小是针对所有版本的,还是每个版本都有 20GB?

例如:我上传了版本 A 的应用程序,在 ODR 上有 5GB 的资源。应用程序的下一个版本的可用存储大小是多少?它将是 15GB 还是 20GB?

是否有任何选项可用于监控按需资源存储?

0 投票
0 回答
132 浏览

ios - 有什么方法可以阻止 iOS 中按需资源中的清除/清理资产?

我有一个包含超过 22000 张图像的大项目。我的 ipa 大小是 400MB+ 所以我添加了按需资源。它会正常工作,但一段时间后我下载的资产被系统清除了......

所以我的问题是:

1)有什么方法可以停止清除(清理)我下载的自动完成系统的资产?

2)是否有任何按需资源的替代解决方案?

0 投票
0 回答
146 浏览

visual-studio - Xamarin.iOS:在 Windows 上从 Visual Studio 提供按需资源包时出现问题

我在使用 Xamarin.Forms、iOS 按需资源和 Windows 上的 Visual Studio 时遇到问题。每次我尝试使用按需资源运行应用程序并触发下载时,我都会看到从NSBundleResourceRequest.BeginAccessingResourcesAsync()检索到的错误消息,其描述为:Error Domain=NSCocoaErrorDomain Code=4994“请求的应用程序数据不存在。” . 该应用程序从 Windows 上的 Visual Studio 启动。我正在构建应用程序并将其从 Visual Studio Enterprise 2019 部署到在远程 Mac Mini 上运行的 iPhone 模拟器。有趣的是,当应用程序在本地从 Visual Studio for Mac 构建和部署时,这个问题就消失了。

如果您想自己尝试此操作,可以使用有关 Xamarin 平台上的按需资源的官方示例,称为 iTravel。我可以用它重现相同的行为。

截图除外

这是一个众所周知的问题,还是有任何可能的解决方法来运行/调试在 Windows 上使用 Visual Studio 的按需资源的 Xamarin 应用程序?我的解决方案不能完全建立在 mac 上。

0 投票
1 回答
317 浏览

ios - 在 iOS 模拟器上通过 Xamarin.iOS 使用按需资源的问题

我遇到了一个问题,我无法通过 Xamarin.iOS 应用程序访问标记为用于 Apple 的按需资源功能的资产,但只能在模拟器上运行时访问。这仅在更新我的环境后发生。我之前使用 Visual Studio for Mac 8.3.9 版和 Xcode 11.2.1 版,我的应用程序能够在模拟器和物理设备上毫无问题地访问 ODR 资源。

现在我使用的是 Visual Studio 8.4.2 版和 Xcode 11.3.1 版,我的应用程序无法正常运行。但是,我只在 iOS 模拟器(适用于任何 iOS 版本)上运行时才看到问题。我可以在物理设备(运行 iOS 13.0 版)上构建和运行,并且没有发现任何问题。

我正在通过 Visual Studio for Mac 创建和标记用于 Apple ODR 的资产。我有一个 ZIP 文件,我直接将它作为资源添加到我的应用程序的 iOS 项目中。在它的属性中,我将 BuildAction 设置为 BundleResource,选择“Do Not Copy”到输出目录,并给它一个 On-Demand Resource 标签。

当我构建我的解决方案时,我可以看到这个 ZIP 文件嵌套在 .assetpack 目录下的bin/iPhone/Debug/device-builds/iphone12.3-13.0/OnDemandResources. 我相信它应该被放入bin/iPhone/Debug/OnDemandResources/。当我运行调用NSBundleResourceRequest's的代码时BeginAccessingResourcesAsync,它似乎什么也没做。调用该函数后,我在 VS 的应用程序输出调试窗口中看到以下错误消息:

没有其他错误或异常被抛出。当我尝试从NSBundleResourceRequest.Bundle对象获取资源路径时,它预期返回 null。

为什么会发生这种情况,为什么这只发生在 iOS 模拟器上而不是物理设备上?搜索上述错误消息时,我无法找到任何有用的信息。Visual Studio 中关于如何在调试模式下构建捆绑资产有什么变化吗?