cordova-plugin-photo-library icon indicating copy to clipboard operation
cordova-plugin-photo-library copied to clipboard

ERROR: Method 'requestAuthorization:' not defined in Plugin 'PhotoLibrary'

Open atologistkaushik opened this issue 5 years ago • 13 comments

When i run app on iOS Device and fetch photo gallery it will throw below error

ERROR: Method 'requestAuthorization:' not defined in Plugin 'PhotoLibrary'

FAILED pluginJSON = ["PhotoLibrary815393554","PhotoLibrary","requestAuthorization",[{"write":true,"read":true}]]

when i run using ionic DevApp it will say plugin_not_installed

i also added photo library plugin in app.modules.ts file

Here is my ionic info

Ionic:

   ionic (Ionic CLI)             : 4.10.2 (/Users/atologistimac2/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.3.0
   @angular-devkit/build-angular : 0.13.8
   @angular-devkit/schematics    : 7.2.4
   @angular/cli                  : 7.3.8
   @ionic/angular-toolkit        : 1.4.1

Cordova:

   cordova (Cordova CLI) : 8.1.2 ([email protected])
   Cordova Platforms     : ios 4.5.5
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.0.1, (and 7 other plugins)

System:

   ios-deploy : 1.9.4
   NodeJS     : v10.15.1 (/usr/local/bin/node)
   npm        : 6.9.0
   OS         : macOS High Sierra
   Xcode      : Xcode 10.1 Build version 10B61

Here is my ionic cordova plugin list

cordova-plugin-add-swift-support 2.0.2 "AddSwiftSupport"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-file 6.0.1 "File"
cordova-plugin-ionic-keyboard 2.1.3 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 4.0.1 "cordova-plugin-ionic-webview"
cordova-plugin-photo-library 2.2.1 "Photo Library"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"

Here i have a function for get photos

this.platform.ready()
          .then(() => {
              this.photolibrary.requestAuthorization({read: true, write: true})
                  .then((value) => {
                      console.log('Request Success: ', value);
                      this.showToast('Success');
                  }, (err) => {
                      this.showToast(err.toString());
                      console.log('Request Error: ', err);
                  }).catch((err) => {
                  this.showToast('Catch Error');
                  console.log('Catch error: ', err);
              });
          });

don't know what i am doing wrong here, can anyone please help me to figure out this issue?

atologistkaushik avatar Apr 19 '19 09:04 atologistkaushik

+1

vitorbarros avatar Apr 20 '19 23:04 vitorbarros

+1

Not working with iOS 12 at all.

baltejsingh88 avatar Apr 21 '19 14:04 baltejsingh88

+1

amatakasap avatar Apr 23 '19 02:04 amatakasap

Hi guys This is how i resolved it... its better to install the following plugins with correct versions and it will work perfectly.

cordova plugin rm cordova-plugin-add-swift-support cordova plugin rm cordova-plugin-photo-library

cordova plugin add [email protected] cordova plugin add https://github.com/nilebma/cordova-plugin-photo-library.git

and everything will work fine again. If you face any issue just delete these plugins from plugins folder manually and then install the plugins.

baltejsingh88 avatar Apr 23 '19 13:04 baltejsingh88

@codecrab-studios Thanks man.. it's working fine now..

jasonbonfadri avatar Apr 24 '19 02:04 jasonbonfadri

@codecrab-studios Thanks, Now it is asking for permission, but after that if i want to get Library it will not print anything in console,

i try below code:

this.photoLibrary.requestAuthorization().then(() => {
  this.photoLibrary.getLibrary().subscribe({
    next: library => {
      library.forEach(function(libraryItem) {
        console.log(libraryItem.id);          // ID of the photo
        console.log(libraryItem.photoURL);    // Cross-platform access to photo
        console.log(libraryItem.thumbnailURL);// Cross-platform access to thumbnail
        console.log(libraryItem.fileName);
        console.log(libraryItem.width);
        console.log(libraryItem.height);
        console.log(libraryItem.creationDate);
        console.log(libraryItem.latitude);
        console.log(libraryItem.longitude);
        console.log(libraryItem.albumIds);    // array of ids of appropriate AlbumItem, only of includeAlbumsData was used
      });
    },
    error: err => { console.log('could not get photos'); },
    complete: () => { console.log('done getting photos'); }
  });
})
.catch(err => console.log('permissions weren\'t granted'));

are you able to get photos details?

atologistkaushik avatar Apr 24 '19 05:04 atologistkaushik

@atologistkaushik Actually i was using this plugin for only downloading images to photo library. I will try this as well to check if thats working or not. Also, once the permission is granted, it works second time you open that page again, maybe...

baltejsingh88 avatar Apr 24 '19 05:04 baltejsingh88

@codecrab-studios Thanks for your fast replay, i try many time but i get nothing in library, or not even going to error or complete block

atologistkaushik avatar Apr 24 '19 05:04 atologistkaushik

@atologistkaushik ok lemme give it a try, will message back you quickly after testing it out!

baltejsingh88 avatar Apr 24 '19 05:04 baltejsingh88

@atologistkaushik have you try to change the console into alert?

library.forEach(function(libraryItem) { document.getElementById("img_header").src=libraryItem.photoURL; });

this is a sample of my code that i've been using and it's working fine.

jasonbonfadri avatar Apr 24 '19 07:04 jasonbonfadri

@jasonbonfadri Change to alert doesn't affect anything.

try above code also but it also not working for me

if i check library that contain anything using below code

 if (library === undefined) {
           this.showToast('Library undefined');
  } else {
           this.showToast('Library not undefined');
  }

than it will show

Library undefined

have you any working demo on git ? than please share a link.

atologistkaushik avatar Apr 24 '19 07:04 atologistkaushik

FYI, since https://github.com/terikon/cordova-plugin-photo-library/issues/163#issuecomment-485805403 was posted, the forked repo (@nilebma) merged a change that bumped up cordova swift support requirement to 2.0.2, so the suggested solution doesn't compile. To fix this, downgrade it back to 1.7.2 (in plugin.xml). Confirmed that everything works on iOS 12.4 (I have a deployment target of 10.1), no requestAuthorization errors.

pliablepixels avatar Aug 23 '19 17:08 pliablepixels

FYI, since #163 (comment) was posted, the forked repo (@nilebma) merged a change that bumped up cordova swift support requirement to 2.0.2, so the suggested solution doesn't compile. To fix this, downgrade it back to 1.7.2 (in plugin.xml). Confirmed that everything works on iOS 12.4 (I have a deployment target of 10.1), no requestAuthorization errors.

Do we need to run any command after making this change?

Aristona avatar Jan 20 '20 15:01 Aristona