Users can post messages on Facebook using my application. iOS presents the users with the permission dialogue the first time they try to post ("foo app would like to post privately on your behalf" - Don't Allow / OK). Now it seems that this decision is a persisting one. Once this dialogue is completed either way, the user will never be asked again.
Now, as this might have happened out of mistake I don't think this is good enough for the user. Is there a way to initiate this permission dialogue from code somehow?
No. You can create your own dialog telling the user that they must go to the Settings app to change the privacy settings.
Related
We are developing an app that share user location on the map when they login and others can tap on their profile pic on map and start chatting with them .
Apple rejected the app with following reply :
"17.1 - Apps cannot transmit data about a user without obtaining the user's prior permission and providing the user with access to information about how and where the data will be used.
Upon further review, we found that your app enables the display of nearby users’ locations on a map but only prompts users on sign up or sign in for permission to show their location. If the user has signed in and previously agreed, then they are not prompted again until they log out. This is not appropriate for the App Store.
Specifically, it is not appropriate to display the user's location automatically without the option to decline if they have already signed in to access your app." We already tried to add multiple popup/confirm boxes for user permissions. what should be done to take care of this privacy issue ?
Should we add a button to manually checkin , everytime they want to update thier location ? this will defeat the purpose though if they have to click a button to update location to show where they are .
Or
Should we ask for permission to Show location each time App is opened since apple's objection is that it don't ask for permission again untill user is logged out and log in back ?
This is a speculative answer, since Apple has somewhat fuzzy replies, but this is my view:
Specifically, it is not appropriate to display the user's location automatically without the option to decline if they have already signed in to access your app."
You could solve it by:
* Sending a push notification when the user's location is being used (this could be annoying depending on app usage of location)
* Showing some info in a very visible place in the app, e.g. in the lateral menu, along with the option to reject to share your location (or otherwise, tell the user there that they can do so by logging out)
There must be other possible solutions, since the reviewer is a human being and the guideline broad and unspecific enough... But I think any of these options would work.
I'm trying out this code: http://github.com/akpw/AssetLibraryPhotosViewer to access photos on my iPhone.
However when I run the application, I get an alert that says the application is trying to access my photos - and then I can allow this or decline.
Can I disable this when using the AssetLibrary, or does this message always appear?
If I can't turn this off, and I press "Don't Allow", can I still make the app access my photos?
Following on from answer above. This will appear once. If you allow access then it will not show again and you will have access to the photo's. If you disallow it then you will not be allowed to access this and the alert dialog will not appear again.
This permission can be changed at any time by the user in the settings app (Under Location and Privacy, or a variation of that.) This has been around since iOS 6 I believe.
You are never able to programtically state that access has been granted, the system handles the permissions which are shown to the user.
This is a security feature of the OS that cannot be disabled. If a user does not give your app permission to access the photo library your app will not be able to access any photos. Given this ability your app should be able to handle the situation gracefully from a UI/UX perspective.
For more information take a look at this guide from Apple about iOS security guidelines (page 47 takes about accessing personal data) iOS Security
I am currently using alasset which asks for permission for first time. If want to pop permission second time or every time when user has blocked it, how it is possible.
there is no way to show the permission prompt the second time.
The best way to handle the permission prompt is that you should explain to the user before triggering the permission prompt (read: call method in the AssetsLibrary framework). If the user still click on "Don't Allow", then you should tell the user how can he/she grant the permission via the Settings app as you cannot invoke the prompt for the second time.
That dialog isn't controlled by the app, so no API for that.
You can reset things as a user in the settings app (IIRC) but no programmatic way.
To get the current authorization status:
[ALAssetsLibrary authorizationStatus];
(+ (ALAuthorizationStatus)authorizationStatus)
Also, methods to get assets taking access error blocks, e.g.:
- (void)assetForURL:(NSURL *)assetURL
resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock
failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock
In Windows 8, javascript metro apps, if the user denies the permission to use Geolocation, then the permission always remains denied.
Maybe the user denied permission to use Geolocation when using the app for the first time but later might be willing to allow use of geolocation as trust is built. But I could not find how to ask for permission again.
Even in the Win8 Geolocation sample, once the permission is denied then it remains denied and there is no way to ask for permission again.
Is it possible to ask the user for permissions again?
You can always prompt the user with a flyout or a message dialog, you just can't initiate a geolocation query and cause the core capability question to fire. Users will learn soon enough that capabilities are configurable in your apps Settings | Permissions flyout and you can even point them there to change their answer.
In other words, I think the platform is avoiding the scenario where the user says, "Would you leave me alone?! I don't want to be bothered about my privacy!" and if the developer is careful about his workflow then I doubt it will be too difficult to avoid the scenario where the user says "Hey! I want to this app to get smarter about my location but I don't know how to enable that."
Subjective I know, but you can see how it favors the user.
You could do a Toast notification but like Jeremy says if you get to annoying with it you could drive users away.
According to the calendar and events programming guide from Apple:
On iOS 6 and later, we must request access to use the user’s Calendar database with the requestAccessToEntityType:completion: method after the event store is initialized.
It is also stated that the user is only prompted the first time the app requests access to an entity type; any subsequent instantiations of EKEventStore uses existing permissions. Your app is not blocked while the user decides to grant or deny permission.
My question here is: is there a way for us to prompt the user again to request access to an entity type?
It seems bad that I have to put a UIAlertView to ask the user to go to Settings and give the proper permissions.
As it is now, you will not be able to prompt the user again, if the user said no the first time. They will need to go to settings to change their choice. So an alert is a way to do it.