Ошибка загрузки ресурса AppStore по требованию в приложении iOS — запрещенные пути

У меня есть приложение, использующее ARKit. До текущей сборки все активы были включены в сам пакет приложения, и у пользователей не возникало проблем с использованием приложения.

Однако я хотел включить в приложении Ресурс по требованию, чтобы ресурсы новых модулей (игр) можно было загрузить из AppStore, тем самым избегая большого размера приложения. Следуя документации iOS, я смог использовать ODR, и приложение отлично работало на моем устройстве. Он загружал ресурсы, используя ODR, как и должно.

Однако при загрузке в AppStore для обзора приложений я столкнулся с ошибкой:

введите здесь описание изображения

Моя структура папок для конкретной папки SCNAssets (которая помечена) приведена ниже:

введите здесь описание изображения

Обратите внимание, что приложение отлично работает с ODR на моем устройстве. Я сделал следующее и пытался несколько раз, но безрезультатно.

  1. Создание чистой сборки.
  2. Изменение версии/сборки.
  3. Убедитесь, что ODR включен в настройках сборки и т. Д. - все гигиенические шаги. И все это XCode, нет платформы, которую я использую (например, Xamarin и т. Д.)
  4. Использование существующих решений, связанных с SO.

Apple не так много документации по вопросам, связанным с загрузкой в ​​​​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()
        }
    }
}

Доступ к ODR в ViewController

// 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."
})

person Manganese    schedule 15.05.2018    source источник
comment
Перейдите к редактированию схемы и сделайте конфигурацию сборки от отладки до выпуска, а затем проверьте   -  person aBilal17    schedule 15.05.2018
comment
Интересно, скорее очень интересно это работает. Не могли бы вы объяснить, почему?   -  person Manganese    schedule 16.05.2018
comment
Абсолютно! Пожалуйста, объясните :)?   -  person Manganese    schedule 16.05.2018
comment
Это взлом, но определенно позвольте мне найти причину этого.   -  person aBilal17    schedule 16.05.2018


Ответы (2)


Продукт -> Схема -> Редактировать схему

Перейдите к редактированию схемы и сделайте конфигурацию сборки от отладки до выпуска, а затем проверьте. Пожалуйста, не забудьте очистить, используя «команда + опция + сдвиг + k» перед созданием архива.

Это решит вашу проблему.

person aBilal17    schedule 16.05.2018

Внимательно изучив сообщение об ошибке, вы увидите, что ошибка ссылается только на файлы .DS_Store.

Файлы .DS_Store — это скрытые файлы, созданные средством поиска для хранения настроек презентации для каждой папки.

Решение состоит в том, чтобы удалить все файлы .DS_Store в подкаталогах вашего проекта перед сборкой.

  1. Закрыть Xcode
  2. Откройте терминал и перейдите в каталог вашего проекта.
  3. Введите найти . -name '.DS_Store' -type f удалить
  4. Откройте Xcode, загрузите свой проект, очистите, перестройте, заархивируйте и загрузите в AppStore.
person stipus    schedule 12.11.2019