Repolode
sparrowcode

sparrowcode/PermissionsKit

A Swift library for iOS that provides one unified API to request system permissions and read their status.

Stars
5,812
Forks
479
Open issues
4
Last commit
2 months ago

What is it?

PermissionsKit gives iOS apps a single API for requesting system permissions such as camera, location, notifications, photos and contacts, and for checking whether each one is authorized, denied or not determined. Each permission ships as its own Swift package product, so an app only links the permissions it actually uses.

The library also helps with the surrounding setup. It exposes the Info.plist usage description key for each permission and supports localising those descriptions through xliff export or InfoPlist.strings files. FaceID is a documented exception: it cannot distinguish authorized from not determined, so only the denied state is reliable.

Key features

  • 01Request permissions and read their status through one API.
  • 02Each permission is a separate Swift package product, keeping binaries small.
  • 03Covers Bluetooth, Calendar, Camera, Location, Notifications, Photos, Health and more.
  • 04Provides the Info.plist usage description key for each permission.
  • 05Supports localising usage descriptions via xliff export or InfoPlist.strings.

Use cases

  • Adding a permission request flow to an iOS app with consistent handling across permission types.
  • Checking current permission status before showing a feature that depends on camera or location.
  • Keeping an iOS app's linked permission APIs minimal for App Review.

Quick start

  1. 1

    Add the package in Xcode via File → Add Package Dependencies using the repository URL

  2. 2

    Select only the permission products your app uses, then import them in Swift

Things to know

  • Targets iOS only.
  • FaceID cannot distinguish .authorized from .notDetermined, so only .denied is reliable for it.

In collections

Topics

FAQ

What is PermissionsKit?
A Swift library for iOS that provides one unified API to request system permissions and read their status. PermissionsKit gives iOS apps a single API for requesting system permissions such as camera, location, notifications, photos and contacts, and for checking whether each one is authorized, denied or not determined. Each permission ships as its own Swift package product, so an app only links the permissions it actually uses.
Is PermissionsKit free to use? What license does it have?
PermissionsKit is open source under the MIT license. Check the license terms before using it in commercial products.
Is PermissionsKit still maintained?
Updated within 6 months. The last commit to PermissionsKit was on Sep 12, 2026.
What can I use PermissionsKit for?
Adding a permission request flow to an iOS app with consistent handling across permission types. Checking current permission status before showing a feature that depends on camera or location. Keeping an iOS app's linked permission APIs minimal for App Review.
How do I install PermissionsKit?
Add the package in Xcode via File → Add Package Dependencies using the repository URL Select only the permission products your app uses, then import them in Swift
Where can I get PermissionsKit?
The source code and installation instructions are on GitHub: https://github.com/sparrowcode/PermissionsKit

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects