explaingit

nickoneill/permissionscope

4,797SwiftAudience · developerComplexity · 2/5Setup · hard

TLDR

An archived iOS library that once let developers show all permission requests in a single friendly dialog with explanatory text, no longer maintained and incompatible with iOS 10 and later.

Mindmap

mindmap
  root((PermissionScope))
    What it did
      Batch permission requests
      Custom explanatory text
      Auto-close when done
    Permissions supported
      Location
      Camera and microphone
      Contacts and calendar
      Notifications
    Standalone API
      Check permission status
      Trigger without dialog
      Granular control
    Status
      Archived project
      Swift 3 only
      iOS 8 to 9 only
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Study the original approach to batch permission requests as a reference for building a modern replacement in SwiftUI.

USE CASE 2

Review the standalone permission-status API to understand how iOS permission states can be checked programmatically before showing UI.

USE CASE 3

Look at the customization approach to understand how permission dialogs were styled before iOS 10 changed the permission model.

Tech stack

SwiftObjective-CiOS

Getting it running

Difficulty · hard Time to first run · 1day+

Deprecated and incompatible with iOS 10 and later, do not use in new projects, find a maintained alternative instead.

In plain English

PermissionScope is an iOS library that helps app developers ask users for permissions in a friendlier way. The README opens with a notice that the project is no longer maintained and is not compatible with iOS 10 or later, so it should not be used in active development today. When it was active, it solved a common problem: iOS apps often need to ask for several permissions at once (location, contacts, camera, microphone, notifications, and so on), and the built-in system dialogs are abrupt and give users no context about why the app needs each thing. PermissionScope let developers present all the permission requests together in a single custom screen, with explanatory text for each one written by the developer. The user could see what was being requested and why, approve or skip each item, and the dialog would close automatically once all necessary permissions had been granted. The library also included a standalone permissions API, separate from the dialog. This let developers check the current status of any permission (granted, denied, unknown) or trigger a permission request from code without showing the full dialog, which was useful for more granular control from a custom UI. Supported permissions covered most of what iOS offers: location (both while-in-use and always-on modes), contacts, calendar events, reminders, notifications, microphone, camera, photos, Bluetooth, and motion sensors. Visual details like button colors, label fonts, and corner radius were all customizable to match an app's design. The library was written in Swift 3 and also worked with Objective-C projects. It targeted iOS 8 and above. Because it has not been updated since before iOS 10, developers looking for similar functionality today will need to find an alternative.

Copy-paste prompts

Prompt 1
Based on the approach used in PermissionScope, write modern Swift code for iOS 16+ that checks camera and notification permission status before showing a custom onboarding screen.
Prompt 2
Using PermissionScope as inspiration, build a modern iOS 17 permission request flow in SwiftUI that presents location, camera, and notification requests on a single screen with explanatory text for each.
Prompt 3
Show me how to check whether a user has granted microphone permission in Swift on iOS 16+, following the same pattern PermissionScope used for its standalone permissions API.
Prompt 4
Write a Swift helper that asks for location, camera, and contacts permissions in sequence and tracks which ones the user approved, inspired by how PermissionScope managed state.
Open on GitHub → Explain another repo

← nickoneill on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.