问题
In ios 11 we now have "Add photos only" permission setting.
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?
回答1:
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.
来源:https://stackoverflow.com/questions/46341694/detect-add-photos-only-permission