This is the <i>only</i> way that permissions should be implemented by any mobile platform. Without it, users are forced to decide at install time whether the payoff of having the app installed is worth the associated risk of granting ALL permissions the app requests. It's a hard choice to make before you've even installed the app.<p>Jeff Atwood describes the app-installation-headaches nicely here: <a href="http://blog.codinghorror.com/app-pocalypse-now/" rel="nofollow">http://blog.codinghorror.com/app-pocalypse-now/</a>
Makes me wish Android could request some permissions at runtime.<p>It's painful to have a bunch of permissions in the manifest that aren't used by 100% of users, but 100% of them have to allow them if they want to install the app.
This is fantastic and I wish everything did this. As an android user, I'm often at a loss as to why an app needs a certain permission, and there's simply no easy way to figure out the answer. An initial dialog that explains the feature before it is used/enabled seems like the perfect solution.
Really interesting to see the iterations from obviously awful through acceptable all the way to obvious in retrospect but takes a non-obvious amount of thought and design.
This is great, more developers should think this way. When I worked on Google+ Developer Relations this summer there was no way to do incremental permissions, but it has since been added and makes Sign-In With Google way less scary for a lot of use cases.<p>Android needs this desperately. One of my apps has ~15% of users never updating because I added an additional permission and when you do that you can't auto-update. I wish I could just ask for it at runtime, since it's a Camera permission and I added picture-taking to my app. I'm sure 100% of users would say yes at that time.
I find I'm often surprised by the permissions an app is requesting, which turns me away from the app.<p>I'm an Android user, but I prefer the unix philosophy, I just want an app to do one thing and to do it well. It's hard to find apps that do that I find.<p>Examples that have turned me away from apps before: a filesystem viewer doesn't <i>really</i> need the ability to control my wifi. An ebook reader doesn't <i>really</i> need access to my contact list.
Part of me worries that an app could use this in a bad way as well. If an app asks a user for a permission, and the user says no, the current expectation is that they won't be asked again. However, with this pattern, the app could bother the user until they finally gave up and granted permissions. Of course, this could also backfire and cause the user to uninstall the app.
One of my apps accesses a persons' contacts. The approach I took to this was to notify the user ahead of time that I would be asking for permission to use the app, and that we would never use the contacts for anything but in app convenience. It feels great and is very informative. Only thing is the code is a bit wiry, but I'm working on that.
Very intuitive. People just need a context for permissions to make sense. I feel like this is similar to anything online. Don't ask for something right away until someone understands what the benefit of doing so entails. These rules hold true in sales, pitching, etc.
I'd be interested if anybody also analyzed the permissions for social accounts (Facebook, Twitter).<p>Our experience at Theneeds is kind of strange in this regard. We have the "classical" initial join page with social buttons, and we ask for permissions when the user tap one of them. Surprisingly, we realized that many users click on Facebook icon, but next they "Don't allow" permissions. This forced us to implement a web fallback to still be able to authenticate the users (without forcing them to go to the iphone settings).
Seems like a better workaround for the time being. I know from personal experience that I tend to either: a) somewhat trust the app I'm using, so I just blindly accept to get it out of the way, or b) don't trust the app at all since it's completely new to me, so I tap to deny immediately.<p>If you can make your users feel more comfortable about the legitimacy of your app and help them to feel more at ease with giving away those permissions, then you're doing a good job.
for anyone who wants apps to request permissions or the ability to deny permissions I highly recommend rooting your phone then installing XPrivacy; <a href="https://github.com/M66B/XPrivacy" rel="nofollow">https://github.com/M66B/XPrivacy</a>
A modal "do-what-I-want/pester-you-later" dialog is not the right way. The right way for Vegetable Knight or what-not to ask for permissions is to give the option to say "no, and don't ever ask again," and enforce that at the system level.
Fantastic post. This is a major problem with Android, when oftenly users are asked to grant permissions that apparently have nothing to do with the app.