我有一个使用ARKit 的应用程序。到当前版本为止,所有资产都包含在应用程序包本身中,用户使用该应用程序似乎没有问题。
但是,我想在应用程序上启用按需资源,以便可以从AppStore下载较新模块(游戏)的资源,从而避免了笨重的应用程序。遵循iOS文档,我可以使用ODR,并且该应用程序可以在我的设备上正常工作。它正在按需使用ODR加载资源。
但是,当上传到AppStore进行App Review时,我遇到了错误:
我的特定SCNAssets文件夹(已标记)的文件夹结构如下:
请注意,该应用程序在我的设备上使用ODR可以完美运行。我做了以下尝试多次,但无济于事。
所有XCode,没有我正在使用的平台(例如Xamarin,
等)
Apple没有太多有关启用ODR的应用程序的AppStore上传相关问题的文档。我想知道是否在带标签的资源文件夹中,我们是否也可以有其他文件夹,因为我的文件夹结构是现在-不知道是否可能是原因,因为附加的错误指向我的文件夹结构中的所有文件夹。
帮助将不胜感激。 现在,我取消了对ODR的依赖,并且不再使用ODR,但是这种情况不能长期持续。
注意:资产是所有scn文件,scn粒子系统和图像。
下面简要介绍了访问ODR的代码,但是该代码可与我的设备一起使用,并且应该可以在其他地方使用。我认为该问题可能与文件夹排列有关。
ODR管理器:class ODRManager {
static let shared = ODRManager()
var currentRequest: NSBundleResourceRequest?
var currentProgressFractionCompleted: Double?
func requestSceneWith(tag: String, onSuccess: @escaping () -> Void, onFailure: @escaping (NSError) -> Void) {
currentRequest = NSBundleResourceRequest(tags: [tag])
guard let request = currentRequest else { return }
request.beginAccessingResources { (error: Error?) in
if let error = error {
onFailure(error as NSError)
return
}
onSuccess()
}
}
}
在ViewController中访问ODR // tagName is the name of the tag on the ODR related scnassets folder.
ODRManager.shared.requestSceneWith(tag: tagName, onSuccess: {
DispatchQueue.main.async {
self.game = self.gameFactory.createGame(...)
}, onFailure: { (error) in
self.threeSurfaceLabel.text = "Problem with downloading content. Make sure internet connection is working, and restart."
})
最佳答案
产品->方案->编辑方案
请进入编辑方案,并从调试到发布进行Build配置,然后检查。在创建存档之前,请不要忘记使用“命令+选项+ Shift + K”进行清理。
它将解决您的问题。
关于ios - iOS应用程序中的按需资源AppStore上传失败-不允许的路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50343132/