Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect add photos only permission

In ios 11 we now have "Add photos only" permission setting. ios 11 photos settings

But how we now determinate which photo library access level is set? [PHPhotoLibrary authorizationStatus] works only for "Read and Write" permission check. If app asked only for "Add photos only" permission then it stays PHAuthorizationStatusNotDetermined. If user changed it from "Read and Write" to "Add photos only" it gives PHAuthorizationStatusDenied.

So, how can I tell if my app have permissions to do "Export to Camera Roll" feature, which dosen't require read permissions?

like image 673
Edgar Jan Avatar asked Sep 21 '17 10:09

Edgar Jan


People also ask

How do I manage photo library permissions in IOS?

Access to photos can also be controlled via Settings. To adjust access for your camera go to Settings → Privacy → Photos, choose Camera+ from the list. Change permissions to the new Selected Photos option to manually pick Photos items Camera+ will see. To change those selections, tap Edit Selected Photos.

How do I give my iPhone permission to access photos?

On your iPhone or iPad, open Settings. Tap Photos. Select a permission option.


1 Answers

since iOS 11, in order to gain only Write access you'll need to add the NSPhotoLibraryAddUsageDescription in your info.plist. The problem here arises if you want to check if the user allows you to do that. It cannot be done through the [PHPhotoLibrary authorizationStatus] method, since that calls out the read/write popup (and you'll need to have NSPhotoLibraryUsageDescription in your info.plist too).

If you want to check if the user gave your app access to write, you'll have to call UIImageWriteToSavedPhotosAlbum (which I'm guessing you already call if you want to add data to the gallery), and that gives you a callback which tells you if the saving worked or not, but the bigger thing is that it shows the user your NSPhotoLibraryAddUsageDescription text.

Now, in order to make sure you have access on both, you should add both NSPhotoLibraryAddUsageDescription and NSPhotoLibraryUsageDescription added to your info.plist and do your regular check with the PHPhotoLibrary, and if that fails, then you can only check when you want to save the data to the library with UIImageWriteToSavedPhotosAlbum.

I'd say you can check only with UIImageWriteToSavedPhotosAlbum but you need to actually save an image to the user gallery to do that and it's hacky, which is a no no.

like image 113
mikebld Avatar answered Sep 24 '22 08:09

mikebld