apache / cordova-plugin-camera

Apache Cordova Plugin camera
https://cordova.apache.org/
Apache License 2.0
960 stars 1.52k forks source link

[IOS] All photos are available even though only some photos are allowed to access #877

Open hieunguyen2211 opened 4 months ago

hieunguyen2211 commented 4 months ago

Bug Report

Problem

In IOS, when accessing the gallery, there is a dialog and the user needs to choose an option to grant access gallery permission to the application. If the user chooses "Select more photos...", there is a view for him/her to select which photos can be accessed. However, after that, in the next view, where the user can select a photo to import to the application, the user can access all photos in the gallery instead of only selected photos in the previous view => Granting read access for some photos does not work.

What is expected to happen?

When the user selects photos in the gallery to import to his/her application, only some photos, that are granted access, will be displayed.

What does actually happen?

When the user selects photos in the gallery to import to his/her application, all photos are displayed regardless ungranted access permission

Information

The requestPhotoPermissions method in CDVCamera.m is using deprecated API from PHPhotoLibrary: authorizationStatus and requestAuthorization. These 2 deprecated methods cannot return the correct value when the user chooses the "Select more photos..." option. 2 alternative methods for those are: authorizationStatusForAccessLevel and requestAuthorizationForAccessLevel, which can return the correct value: PHAuthorizationStatusLimited instead of PHAuthorizationStatusAuthorized.

Environment, Platform, Device

Iphone 14 (IOS 16.6)

Version information

Checklist

NityaSantosh26 commented 4 months ago

+1. Same issue for me with iOS.

DuyTrinh94 commented 4 months ago

+1. I also meet this issue with my iOS device

jcesarmobile commented 4 months ago

There is no difference in knowing which option the user selected, the photo picker doesn't really need any permissions to work. Choosing the "limited" option, the only thing that limit is accessing privacy related information about the picture, such as the exif data, so that's why the picker shows all pictures, because no permission is required for accessing them.

But it's true that it's very confusing, not sure if the code should be changed to not request permissions or to add an option to request it or not.

hieunguyen2211 commented 1 month ago

Hi @jcesarmobile ,

Are there any update on this topic? From my perspective, if permissions are not required for the photo picker on IOS (without accessing privacy), the code should be changed to not to request permissions.