Cordova-plugin-file error: не удается записать файлы в iOS 12 - PullRequest
0 голосов
/ 23 июня 2019

Я не могу использовать файл cordova-plugin-file для записи файла в iOS 12. Код работает для меня, когда я развертываю приложение на своем iPhone 7 Plus, который работает под управлением iOS 11.4.Все, что я пытаюсь сделать, это выбрать файл из библиотеки фотографий и сохранить его в каталоге данных.

После того, как я успешно выбрал файл из библиотеки, вот код, который я использую для записи в каталог данных.

writeToFile(fileName, data) {

    return new Promise((resolve, reject) => {
      if (this.isBrowser) {
        return resolve({});
      }
    const self = this;
      window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function (directoryEntry) {
        directoryEntry.getFile(fileName, {
          create: true
        }, function (fileEntry) {
          fileEntry.createWriter(function (fileWriter) {
            console.log('THIS IS PRINTING: Inside fileEntry.createWriter promise');
            fileWriter.onwriteend = function (e) {
              console.log('NOT PRINTING: Inside fileWriter.onwriteend promise');
              return resolve(fileName);
            };

            fileWriter.onerror = function (e) {
              return reject(e);
              // you could hook this up with our global error handler, or pass in an error callback
            };
            const blob = new Blob([data], {
              type: 'image/png'
            });
            fileWriter.write(blob);
          }, self.fileErrorHandler.bind(null, fileName));
        }, self.fileErrorHandler.bind(null, fileName));
      }, self.fileErrorHandler.bind(null, fileName));
    });
  }

Я передаю локальный URL-адрес файла в качестве параметра данныхк функции.Я попытался изменить это на строку и тип blob, чтобы быть text / plain.Но это также не помогло.

Фрагмент из моего config.xml

<preference name="iosPersistentFileLocation" value="Library" />
    <platform name="ios">
        <edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
            <string>need camera access to take pictures</string>
        </edit-config>
        <edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryUsageDescription">
            <string>need photo library access to get pictures from there</string>
        </edit-config>
        <edit-config file="*-Info.plist" mode="merge" target="NSLocationWhenInUseUsageDescription">
            <string>need location access to find things nearby</string>
        </edit-config>
        <edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryAddUsageDescription">
            <string>need photo library access to save pictures there</string>
        </edit-config>
    </platform>

Меня удивляет то, что код отлично работает в моем iPhone 7 Plus (на iOS 11.4), но когдаЯ пытаюсь на iPhone XR под управлением iOS 12, FileWriter onwriteend не запускается.Попытка перехвата всех ошибок, и никаких ошибок не возникает.

Я также вижу эту ошибку в консоли XCode

2019-06-23 10:28:51.806034-0400 Magically[30751:2758873] [discovery]
 errors encountered while discovering extensions: Error Domain=PlugInKit 
Code=13 "query cancelled" 
UserInfo={NSLocalizedDescription=query cancelled}

В качестве обходного пути я рассматриваю возможность создания большого двоичного объекта изURL-адрес изображения и сохранить его в локальном хранилище.

Можете ли вы помочь?

...