Asking the User about Permissions

Everybody is familiar with this dialog:

To me, it seems as if everything is said about asking the user about certain permissions.
Nevertheless I recommend this Article and also going to summarize my opinions and experiences.

  • Nobody wants to be faced with the permission dialog immediately after one launches the app.
    The user have to trust your your app (for example: it will be responsible with push notifications — no spam) in order to allow using his information.
    If you rash into asking for very personal information, the user will be annoyed and most likely deny the request.

Imagine you walking along the road and suddenly someone asks you about your phone number or address. Would you give him your information?
I certainly would not.
Just as your users, if you do not make clear why they should give them to you.

  • Wait until the time is right.
    As I already mentioned, after the app starts is a bad time for asking about a permission.
    In contrast to that, it would make sense to wait as long as possible before popping the question.
    I think, the best timt to ask about a permission is when the user wants to use a feature which requires it.

For example: you render a map and want to express where the user is located (so far, so MapKit).
The right time to ask is when the user taps a “show my location”-button (to be fair: one could argument that rendering a map implies that the current position will be shown).
Or if your app wants to access the users calendar in order to add an event. The permission should pop up after the user initiated that action (like using a “add to my calendar”-button).

  • Always explain why the user should accept your request and what his benefits will be.
    Think about it as a reward to the user for sharing his information with you.
    Also remember: the user is on your side, as long as you have made reasonable arguments about why his experience with your app will be much better.
  • Avoid rejection on system level
    Always keep in mind: you only got one shot.
    If you present the system dialog (as the picture above shows it) there are two possibilities: The user hits “Accept” and everything is all right, or the user rejects your request. In this case you missed your chance, because you can display the system dialog only once. It will not appear a second time, no matter how much you beg UIKit.
    A good solution for this problem is showing another dialog before the system dialog shows up. You can control how many of your dialogs are shown but don’t overdo.

To wrap up my thoughts, I recommend you to prepare a decent self-made dialog that informs the user about the reason for your request.
This dialog should have buttons to accept (followed by presenting the system dialog) and decline your request (dismisses the dialog and pop it up again when the time is right).
Following these tips, most of your users should agree with you and reward it with their permission.

Post Scriptum:

This article was also published in my blog. Please take a look over there, too.

(It is still work in progress, so please forgive the missing RSS feed.)

I also implemented this concept and published it on GitHub.
In addition to that, I wrote some more words on my blog.

Like what you read? Give Andy a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.