Ionic3: Base64 В плагин Gallery сбой приложения

Я пытаюсь сохранить строку base64 в галерее. Когда я вызываю этот плагин, мой код разбивается. Вот ссылка, которую я использовал для проверки.

код, который я использую

let options:Base64ToGalleryOptions = { prefix: '_img',mediaScanner: true }

   //after the below line my gets close automatically any idea
      this.base64ToGallery.base64ToGallery(base64Image[1],options)
      .then(
        res => {
          debugger
          console.log('Saved image to gallery ', res)
        },
        err => {
          debugger
          console.log('Error saving image to gallery ', err)
        });

Я не могу отлаживать

Я не могу понять, почему мое приложение автоматически закрывается после нажатия этого кода

Обновить:

После установки этой конкретной версии плагина

 ionic cordova plugin add [email protected]

и перенос моего кода на платформу

this.platform.ready().then(() => {

      this.base64ToGallery.base64ToGallery(base64Image,options)
      .then(
        res => {
          console.log('Saved image to gallery ', res);
          this.navCtrl.pop();
        },
        err => { //For ios i am getting as 'plugin_not_installed'
          console.log('Error saving image to gallery ', err);
          this.navCtrl.pop()
        });

    })

Но этот же код не работает для ios в соответствии с документом. Я установил ту же версию, которая поддерживает и ios (2.0.2), но выглядит что-то отсутствует, если есть, пожалуйста, дайте мне знать

Ответ 1

Поскольку вы не можете отлаживать здесь, есть три проблемы, с которыми я столкнулся, пока не получил ее на работу, скорее всего, вторая проблема, если на Android или третья проблема, если на iOS.

1) Error saving image to gallery cordova_not_available

Исправлено для этого было создание проекта, в котором была кордона, испеченная с помощью ionic start blank --cordova

2) Error saving image to gallary Error while saving image Я получил это сообщение об ошибке на устройстве Android. Я рассмотрел их реализацию кода здесь https://github.com/Nexxa/cordova-base64-to-gallery/blob/2f531aaa0bf17b900cf6bd9704082e72f183d325/src/android/Base64ToGallery.java

Видел, что они ничего не сделали с разрешениями WRITE_EXTERNAL_STORAGE.

Моим решением было добавить AndroidPermissions и проверить разрешения WRITE_EXTERNAL_STORAGE во время выполнения.

hasWriteAccess: boolean = false;
constructor(private base64ToGallery: Base64ToGallery,
   private androidPermissions: AndroidPermissions) {
}

ionViewWillEnter() {
   this.checkPermissions();
}

checkPermissions() {
   this.androidPermissions
   .checkPermission(this.androidPermissions
   .PERMISSION.WRITE_EXTERNAL_STORAGE)
   .then((result) => {
    console.log('Has permission?',result.hasPermission);
    this.hasWriteAccess = result.hasPermission;
  },(err) => {
      this.androidPermissions
        .requestPermission(this.androidPermissions
        .PERMISSION.WRITE_EXTERNAL_STORAGE);
   });
   if (!this.hasWriteAccess) {
     this.androidPermissions
       .requestPermissions([this.androidPermissions
       .PERMISSION.WRITE_EXTERNAL_STORAGE]);
   }
}

saveImage() {
   if (!this.hasWriteAccess) {
     this.checkPermissions();
   }
   let options: Base64ToGalleryOptions = {
     prefix: '_img', 
     mediaScanner: true
   };
   this.base64ToGallery
     .base64ToGallery(this.base64Data, options).then(
     res => console.log('Saved image to gallery:', res),
     err => console.log('Error saving image to gallery:', err)
   );
}

3) This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value explaining to the user how the app uses this data. This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value explaining to the user how the app uses this data.

Решение состоит в том, чтобы добавить NSPhotoLibraryAddUsageDescription в NSPhotoLibraryAddUsageDescription/config.xml, вложенное между <platform name="ios"> and </platform>

<config-file parent="NSPhotoLibraryAddUsageDescription" target="*-Info.plist">
    <string>Saves images from base64 to your Photo Library</string>
</config-file>