Detect add photos only permission
Asked Answered
B

2

13

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?

Blanche answered 21/9, 2017 at 10:36 Comment(2)
Same problem here. Any luck in finding something?Meshuga
@Daniel Tranca As far as I understand in ios11 there is no way to know that we can write to photo library without actually trying to do so and checking for errors (e.g. use UIImageWriteToSavedPhotosAlbum callback as mikebld suggested). It is unfortunate, because I always disabled "Export to Camera Roll" button, if device denied permissions to library. Now I must always show it and return some error alert if export attempt was unsuccessful.Blanche
S
13

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.

Studio answered 9/10, 2017 at 18:0 Comment(0)
E
4

Since iOS 14 you are able to check if the user gave permission for add photos only:

PHPhotoLibrary.authorizationStatus(for: .addOnly)

Unfortunately that means below iOS 14 you don't know if the user has selected the add photos only or another option. The only other way to check is to actually use UIImageWriteToSavedPhotosAlbum like mikebld said in his answer.

Elli answered 4/4, 2022 at 8:29 Comment(1)
#53307975Dominga

© 2022 - 2024 — McMap. All rights reserved.