I am an iPhone user and typically, when you want to upload a photo to an app, there are three steps:first, the app checks whether it has permission to access albums and if it does not ,it will ask you to give permission. Then, you will be presented with an interface from which you can select a photo from the album, and finally, you press a button to upload the selected photo to the app. Previously, I thought the app can only access the photo that the user selects, but then I saw this answer:
https://apple.stackexchange.com/questions/107404/is-it-safe-to-allow-apps-to-access-your-photos
which says: "When you give access to an app to photos...it can read all your photos on the device in an unencrypted form." "For example, once you give permission, iOS apps for popular services like Dropbox, Facebook, Flickr and Google+ can upload all your photos to their services. With iOS 7, these apps can also be allowed to do it in the background (when you're not actively running the app). Most users wouldn't even actively know which photos are being uploaded and when."
Millions of people are using ios system and many photos in the albums are private, including but are not limited to images of having sex, images of getting drunk, etc. so I think the most appropriate design is to let the app only access the photos that users selected, not all the photos on the phone. And I think a lot of users, like me, believe that when you give an app permission to access the album, it can only access the photo selected by users, not every photos on the device.
Since I'm a programmer(but not an ios programmer), I take a look at the ios documentation, and I found a class called UIImagePickerController. I believe it is through this class that the app gets a selected image from the user, so it seems to me that an app can only access the selected image. But on stackoverflow I also found an answer about how to select all photos from the device: IOS Photos framework
So my question is, if you give an app permission to access the album, can it only access the photo users select from UIImagePickerController, or every photo on the device?
Once a user grants permission to access the photo library, that iOS app has complete access to every photo in the user's photo library. The permission is not for a specific photo. And UIImagePickerController is only a graphical means to allow the user to select an image. There are APIs that allow the app to access any photo without user interaction. And all of those APIs are covered by the one single permission to allow access to the photo library.
#rmaddy is correct that the user grants permission to access the entire photo library on the user's device. However, note that iPhone users have the option of hiding photos by viewing the photo and tapping the share button (Tap share and select Hide.) See Apple support article .
Related
After submission for review, I got this from Apple review:
We noticed that your app requests the user’s consent to access the camera and photos, but doesn’t sufficiently explain the use of the camera and photos in the purpose string.
In my app, camera and gallery access is needed in various places like for uploading product images, sending images to chat, posting images in the news feed, and uploading profile photo.
Apple requires an explanation to why the camera and gallery are being accessed.
If I explain the use for uploading profile image, this is irrelevant if they upload a product and also needs another explanation if the user will send photos to chat.
So the question is how can I generalize the camera's purpose string in a way that it can cover all my camera usage given that the purpose string is only one.
Or is there a way to write a camera purpose string for each and every camera usage?
Yes, #john we have to elaborate properly as they show the same message to the user on the permission popup.
I am using the below statement & app is accepted by AppStore
<key>NSCameraUsageDescription</key>
<string>Access to your camera is required to capture photos required for loan processing or your profile.</string>
<key>NSLocationUsageDescription</key>
<string>To show your location on the map.</string>
Hope this will work!
There's no way to have multiple purpose strings because Apple is not allowing you to customize the permission dialog.
You can just put what they are used for in one sentence, like "Need your permission to Photo Gallery for post or chat"
I got the same response the other day. My case is using the photo for feedback or a user avatar. So I just put all of them in that string
Hope this will help.
I have an app that allows the user to select photos from their library and then use them but I am looking for a way they can be opened straight from the Photos app that list all the photos.
It would be in the same way that when you click to share a photo you can use services like Twitter, Facebook and Email them etc. I have looked into assigning the app the document type so that the images can be opened from say an email attachment through the quick look but I am wanting it to be accessible from the photo gallery itself.
Is this even possible or are apps not aloud to be listed in the share list?
I am trying to load the images received from a contact in iMessage, but I have not found in iOS SDK to do this.
Load the contents of incoming iMessages.
Load the images received by iMessage.
Someone who knows how to help me?
This can not be done with on iOS with the iOS SDK. Due to privacy concerns Apple does not allow access to any messages received via the messages.app.
If you're looking to pull images directly from the Messages app, then no you can't do that. If however, you're okay with only viewing the images that the user has chosen to save to the camera roll, then yes you have a few options.
You can use the UIImagePickerController class to allow the user to select photos from their camera roll, or the AssetsLibrary Framework to get references to these images without the user selecting them. Both solutions do require the user granting you access to the camera roll though.
I normally use the ALAssets library to access photos and display them, but I wanted to provide the user with an alternative in case they didn't feel comfortable giving access to location data. I installed the UIImagePicker, and while it still works fine on iOS5, I noticed on iOS6, when I shut off access to the photos in my app, I get "This app does have access to your photos or videos". Does the UIImagePickerController no long allow non disputed access to the photos?
It doesn't matter which route you take to access the photos, if the user has denied access then none of the options will be permitted to access the photos. The authorisation messages may be a little misleading but the same permissions apply to both access methods.
http://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iOS6.html
In there it says "For the photo library, the existing interface supports the app being denied access." Does it mean that there is no way for the app to ask the user permission to access his photos? He'll need to manualy go to settings -> privacy -> Photos and toggle my app?
If you are using ALAssets to get access to photo library, for the first time system will ask user if he want's to share photos to your app. If user taps "Allow" - everything will be ok, otherwise, user should go to the preferences and allow it manually when he wants.
Hope it helped
No, that not true. iOS will ask user for persmission when he first time accesses his photos from your app.