A universal Swift API for requesting and checking iOS system permissions like camera, location, and notifications.
PermissionsKit is a Swift library that provides a universal API for requesting and checking system permissions on Apple platforms like iOS, macOS, and visionOS. It solves the problem of managing privacy-sensitive features—such as camera, location, and notifications—by offering a clean, consistent interface that reduces boilerplate code and helps ensure App Store compliance.
iOS and Apple platform developers who need to handle system permissions in their apps, particularly those building apps with privacy-sensitive features that require user authorization.
Developers choose PermissionsKit for its modular design, which allows importing only necessary permissions to avoid App Store review issues, and its unified API that simplifies permission handling across multiple Apple platforms and UI frameworks.
Universal API for request permission and get its statuses.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a single, consistent interface for requesting and checking status across 16+ permissions like Camera, Location, and Notifications, reducing boilerplate code as shown in the usage examples.
Allows importing only specific permission modules to avoid unnecessary API calls and App Store review issues, emphasized in the 'Why Modules' section with warnings about selective inclusion.
Works on iOS 12+, macOS, visionOS, tvOS, and watchOS, and supports both UIKit and SwiftUI, making it versatile for Apple ecosystem development.
Automatically provides the correct usage description keys for each permission, simplifying plist configuration and localization setup, as detailed in the keys section.
The README explicitly warns that FaceID permission cannot accurately detect between .authorized and .notDetermined states, returning .notDetermined for both, which limits reliable status checks.
CocoaPods integration requires listing multiple subspecs for each permission, and the README advises against it as 'outdated,' indicating maintenance overhead and potential confusion.
It only handles system permissions within Apple's framework, so for apps needing cross-platform permission handling or newer, niche permissions not yet supported, native APIs may be necessary.