1. Prove your app is awesome
This may be obvious, but it's the critical first step. Before asking anyone to risk their social capital, show users why their friends will thank them for the invite. Let them enjoy something about the experience, build rapport with them, convince them that it's going to be fun with other people. It also doesn't hurt to build some social media buzz so they feel the pressure to get on the wagon. If that's the audience you're after.
2. Prove your app is trustworthy
Even if the experience is compelling, do they trust you with their contact list? This is a hard thing to quantify. But there are steps you can take.
Don't be sleazy. Make it clear that you will not reuse the contacts they entrust you with and you won't try to track their social activity on an on-going basis. But everyone says that.
Use permission priming1: You don't want to ask for permission to anything (like the address book) until it's clear why you're asking. Ideally, the request happens when the user asks to use the feature. This approach stems from the general psychological concept of priming.
Give the user control. As this article puts it
we want both the safety2 of automation and the sense of control
2 Replace safety with convenience in this case. Granting access to an existing list makes your life easier. But some users will prefer more granular access to just share a particular email address or social account. At the least invasive end of the scale, give them a link they can send themselves.
The sum is greater than the parts
Add up all these points:
- Be shareably awesome
- Don't be a jerk
- Ask nicely
- Let them decide
The sum total may create enough trust that they give you full access and your app takes off like wild fire.3
1 Permission priming on Android devices
Up until recently, the Android team took a stricter view of permission acceptance. They let users know everything an app would request up front. Of course, we now know this isn't fair, since users rarely understand what all those access requests mean at install time. Enter Android 6 and the ability to request permission at run time.
If the user is running Android 6.0 (API level 23) or later, every time the user tries some new app feature that requires a permission, the app has to interrupt the user's work with a permission request. If the user is running an earlier version of Android, the user has to grant every one of the app's permissions when installing the app ... — via developer.android
However, older versions of Android did have a kind of permission priming which some Android fans will tell you they love: Application intents.
You can have your app ask for permission to perform the operation itself. Alternatively, you can have the app use an intent to have another app perform the task. — via developer.android
The user is "primed" at run time to choose from installed apps that are already approved to handle that intent. The thing hardcore Android fans (myself included) like about intents is that it further increases your control. The user chooses a dedicated app to handle a dedicated function and, at the same time, can decide to use that app by default the next time the intent is declared.
3 This answer does not constitute a guarantee of success. People are weird. Apps are complicated. Your experience may suck.