I think that most users aren't that well equipped to make these kind of decisions. How could they know how critical contacts or location permissions are to the product? I think users need to make a trust/don't trust call on each app, and Android does this well.
I think the iOS model works a little better because you can defer requesting permissions until you actually need them. That way the user can get a better understanding of what the app is going to do with those permissions.
A game has a feature that lets you find people playing the same game nearby you. So in the app you click a button saying "Find players nearby", then the apple dialog pops up, asking for GPS permissions. The user is way more likely to understand why the app is asking for your location.
Contrast that with the android model, where you accept the permissions at the beginning, it may not be immediately obvious as to why the app wants your location, so you'll just deny it.
Also, with the Android model, it's all or nothing, and developers can assume that if an app is installed, it has all of the requested permissions. Whereas with iPhone, the developers is forced to cater for situations where not all the permissions are allowed.
The solution to this would be to put an explanation on why your apps needs access to, e.g, the contacts in your app description. Users shouldn't blindly trust you. If you provide a reason why you need all your permissions, the user are well better "equipped" to make those decisions.
The difference is that it enables your trust/don't trust decision. An app that requires access to your location and contacts has to be more trustworthy than an app that doesn't.
Comments
I think that most users aren't that well equipped to make these kind of decisions. How could they know how critical contacts or location permissions are to the product? I think users need to make a trust/don't trust call on each app, and Android does this well.
I think the iOS model works a little better because you can defer requesting permissions until you actually need them. That way the user can get a better understanding of what the app is going to do with those permissions.
A game has a feature that lets you find people playing the same game nearby you. So in the app you click a button saying "Find players nearby", then the apple dialog pops up, asking for GPS permissions. The user is way more likely to understand why the app is asking for your location.
Contrast that with the android model, where you accept the permissions at the beginning, it may not be immediately obvious as to why the app wants your location, so you'll just deny it.
Also, with the Android model, it's all or nothing, and developers can assume that if an app is installed, it has all of the requested permissions. Whereas with iPhone, the developers is forced to cater for situations where not all the permissions are allowed.
The solution to this would be to put an explanation on why your apps needs access to, e.g, the contacts in your app description. Users shouldn't blindly trust you. If you provide a reason why you need all your permissions, the user are well better "equipped" to make those decisions.
If they can't tell how critical it is to the app, what difference will being told it up front or when it's happening make?
The only justification for up front permissions I can come up with is the "I want my cat pictures" effect.
The difference is that it enables your trust/don't trust decision. An app that requires access to your location and contacts has to be more trustworthy than an app that doesn't.