from the original article I wrote on Medium
PermissionScope is an open source authorization dialog inspired by Periscope, the broadcasting program recently purchased by Twitter. My goal was to create a permissions dialog that was flexible and ready for users, and increased the number of users who approved requests for a given permission. Developers should be easy to configure and use, so you can get a great permissions experience in your app, even if it's your first version.
The repo saw some great star moments last week, but Github is not exactly the best place to go long on the inspiration behind the code. We even saw a shoutout from Periscope founder @kayvz and some insight into the original inspiration from @mulligan at Cluster.
̵1; Kayvon Beykpour (19459008) @kayvz) May 7, 2015
Every great product is born of some engineer frustration, right? Same with Permission Scope. I'm struggling to introduce permissions when we built treats. There are no existing projects that have kept up with the current state of the iOS apps and provide a cheap way (such as low time) to request permissions. The super smooth contextual explanation flow is nice, but do you want to spend time on the first app you build one?
Practically speaking, all apps iOS permissions are incorrect. The worst cases prompt for any permission immediately upon startup, and prevent the user from having a variety of dialogues before they even know what your app does. I've watched this play while watching people use apps over and over, and unless your app is a personal recommendation, the answer is usually No, Reject, Allow, etc.
This probably gets your app not working. If you need Contacts permission to send invitations and the user does not allow the permission, they will probably not invite anyone to use your app.
Perhaps this is "nice" because you have designed your invitation screen to ask them to repeat this in settings. But it's not a good experience for anyone. And at the back, no one will waste their time implementing worst case scenario code in a MVP app.
Permission Scope One take over the Periscope permission overlay that really sticks with me. I have not seen a Periscope post explaining their reasons for building the original version, but I knew it was the future of permissions just when I saw it.
I have been a spokesman for responsible permission for a while, but it is not easy to do the right thing. I used ClusterPrePermissions which is a good way to alert users that permissions should be requested and provide some explanation as to why you need permissions. But users do not read things, especially things that look like standard iOS dialogs.
The (Cluster Inc) has a long post here describing the right way to request permissions that I generally agree with. The problem here was that the only publicly available code is sucky pre-authorization dialogues, not the fine contextual.
Contextual permission streams tend to be quite customizable and hard to share across apps, which is one of the reasons I jumped when I saw the Periscope version. It's easy to use for the usual scenario where one or more permissions are required to use the next screen in your app. It provides a basic amount of description for why your app needs the permission and it does not look like a general iOS dialog.
When using PermissionScope
it is most sensible to introduce PermissionScope when a user punches through to an action or flow that they can not perform without giving permissions. This is what we mean by contextual permissions.
Many apps have this kind of behavior somewhere in their apps:
- User Invitations Need Contact Access
- Camera Applications Need Camera and Microphone Access
- Access to Retrieve and Save from Photo Album
Sometimes this means you need more than one permit for a particular flow, as in treatment. We need both contacts and location access so that you can send a treat to a friend at a location .
Move through the main flow of your app, you should be nice. Each step is a small success for the user and interferes with permission dialogs destroying the experience.
Therefore, we present all permissions at the same time and allow the user to handle permissions at their own pace and without asking them about Context breaks back to your app flowing two or three times.
We have included almost all permissions available in PermissionScope, regardless of your permission requirements, PermissionScope will cover it now or soon.
If you have used the treatment dialog box, you may notice that notification permission is also optional. If you allow contacts and location, the "Let's Go" button is enabled and the user can continue without activating notifications. In addition, if the user chooses to ignore Notifications on this first pass, we will not request them again until they meet another necessary permission. Once all necessary permissions have been met, the query will no longer be displayed on subsequent visits.
Why have we added alerts to this screen? It does not seem related to the task at hand, but we are already asking you to approve things, why not take an extra action? What tried to avoid are random dialogs thrown into the user's face while still determining the value of your application.
I'm still not 100% on that behavior. I'd like to give the user a different contextual way to turn on alerts when it's really relevant, but I have not figured out how to ask me without feeling spammy. Still working on this.
Periscope also has a smaller version for only alerts that is a bit more consistent with that permission. This feels nice and I'm considering expanding PermissionScope to handle these one-off issues more cleanly.
Do we still have regular permissions? Yes, there is a place for these. We still provide the basic placement dialog for the geofencing setting. It works because it is in direct response to a user action saying that they want a feature, unlike our first permission dialog that usually occurs before the user knows how the app works.
Finally, if the user disapproves of the permissions for some reason, we clarify what prevents them from moving forward in the dialog and taping a useful link that sends them to Settings to reenable (I love this section but can do not take full credit, a pseudoanonymous helpful commander put most of the foundation).
PermissionScope is a new way to request iOS permissions in context. It's on github with a nice example app. Also Github does not support emoji on headlines in Readme files 🔒🔭
If you do not want to build and run yourself, download and give it a shot. You will encounter a permission dialog when you submit your first treatment or if you redeem one you have been sent.
Questions or comments? Find us at twitter or send a problem on github