Возможность читать загруженный ресурс по требованию в iOS Simulator, но не на физическом устройстве - PullRequest
0 голосов
/ 08 апреля 2020

Я использую ресурсы Apple On-Demand, чтобы попытаться загрузить игру в свое приложение.

Поиск ODR работает хорошо (с помощью пользовательского плагина, который я разработал), но затем я могу прочитать загруженный файл. ресурс по требованию только на симуляторе, Я не могу сделать то же самое на физическом устройстве !

Путь к загруженному файлу, который я получаю через код Objective- C моего Пользовательский плагин
(NSString *path= [[NSBundle mainBundle] pathForResource:@"flying-block-game" ofType:@"html" ];)
.. является следующим:

  • Симулятор

[odr] Путь для игры в летающий блок. html: '/ Users / myUser / Библиотека / Разработчик / CoreSimulator / Устройства / D016D3B C -E9F9-43F2-8EC1-9A471819A9B5 / data / Library / OnDemandResources / AssetPacks / 89A6F4A7-D148-419B-B5B50302F2325325322F2 com.us-company.sports-beta-enterprise.asset-pack-5a105e8b9d40e1329780d62ea2265d8a.assetpack / flying-block-game. html '

  • Физическое устройство:

[odr] Путь для летающей блок-игры. html: '/ var / mobile / Library / OnDemandResources / AssetPack s / 2F2887A0-7A16-4E5D-81C2-1C688A69DA80 / 15538308173473852725 / com.us-company.sports-beta-enterprise.asset-pack-5a105e8b9d40e1329780d62ea2265d8a.assetpack / * * * * 10 * * 10
Ошибка, которую я получаю, когда пытаюсь прочитать файл (используя cordova-plugin-file), составляет 5 - ENCODING_ERR, но я сомневаюсь, что это точно, поскольку я также получал ту же самую попытку извлечения файлов по несуществующему пути.

Это код JS, который я использую, чтобы попытаться прочитать загруженный ресурс по требованию, используя путь, возвращаемый моим пользовательским плагином:

// On-Demand Resources POC
  window.plugins.fetchOdr({ // my custom plugin
    tagName: 'my-test-tag',
    success: (path) => {
      alert(`Success! Odr path: ${path}`);
      // This Breaks.. v V V vvvvvvvVVVVVVvvvvvVVVVvv o . <<------------------------=
      window.resolveLocalFileSystemURL(
        `file://${path}`,
        (data) => {
          const fileEntry = data;
          fileEntry.file(
            (file) => {
              const reader = new FileReader();
              reader.onloadend = function(data) {
                console.log(`[odr] Successful file read: ${this.result}`, data);
                // do stuff here.. (display in webview)
              };
              reader.readAsText(file);
            },
            (err) => alert(`[odr] > File read Error: ${JSON.stringify(err)}`),
          );
        },
        (err) => alert(`[odr] > FileEntry generation Error: ${JSON.stringify(err)}`),
      );
    },


Что я делать неправильно? Как правильно прочитать файл на физическом устройстве?


Я даже добавил эти настройки в файл конфигурации. xml, но это не помогло:

<preference id="TEMPORARY-FULL-WHITELIST" name="iosExtraFilesystems" value="library,library-nosync,documents,documents-nosync,cache,bundle,root" />
<preference id="ODR-POC" name="iosPersistentFileLocation" value="Library" />
...