Popularity
9.3
Stable
Activity
9.1
Declining
4,859
91
392

Programming language: Swift
License: MIT License
Tags: Permissions    
Latest version: v5.4

SPPermissions alternatives and similar libraries

Based on the "Permissions" category.
Alternatively, view SPPermission alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of SPPermissions or a related project?

Add another 'Permissions' Library

README

PermissionsKit

Universal API for request permission and get its statuses. Available .authorized, .denied & .notDetermined.

Community

Navigate

Permissions

Icon Permission Key for Info.plist Get Status Make Request
Bluetooth NSBluetoothAlwaysUsageDescription, NSBluetoothPeripheralUsageDescription โœ… โœ…
Calendar NSCalendarsUsageDescription โœ… โœ…
Camera NSCameraUsageDescription โœ… โœ…
Contacts NSContactsUsageDescription โœ… โœ…
FaceID NSFaceIDUsageDescription โœ… โœ…
Health NSHealthUpdateUsageDescription, NSHealthShareUsageDescription โœ… โœ…
Location Always NSLocationAlwaysAndWhenInUseUsageDescription โœ… โœ…
Location When In Use NSLocationWhenInUseUsageDescription โœ… โœ…
Media Library NSAppleMusicUsageDescription โœ… โœ…
Microphone NSMicrophoneUsageDescription โœ… โœ…
Motion NSMotionUsageDescription โœ… โœ…
Notification โœ… โœ…
Photo Library NSPhotoLibraryUsageDescription, NSPhotoLibraryAddUsageDescription โœ… โœ…
Reminders NSRemindersUsageDescription โœ… โœ…
Siri NSSiriUsageDescription โœ… โœ…
Speech Recognizer NSSpeechRecognitionUsageDescription โœ… โœ…
Tracking NSUserTrackingUsageDescription โœ… โœ…

Installation

Ready to use on iOS 11+. Supports iOS, tvOS, and SwiftUI.

Swift Package Manager

In Xcode go to File -> Packages -> Update to Latest Package Versions and insert url:

https://github.com/sparrowcode/PermissionsKit

or adding it to the dependencies value of your Package.swift:

dependencies: [
    .package(url: "https://github.com/sparrowcode/PermissionsKit", .upToNextMajor(from: "9.0.0"))
]

Next, choose the permissions you need. But don't add all of them, because apple will reject app.

CocoaPods:

This is an outdated way of doing things. I advise you to use SPM. However, I will continue to support Cocoapods for some time.

Cocoapods Instalation

CocoaPods is a dependency manager. For usage and installation instructions, visit their website. To integrate using CocoaPods, specify it in your Podfile:

pod 'PermissionsKit/NotificationPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'

Due to Apple's new policy regarding permission access you need to specifically define what kind of permissions you want to access using subspecs.

pod 'PermissionsKit/CameraPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/ContactsPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/CalendarPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/PhotoLibraryPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/NotificationPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/MicrophonePermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/RemindersPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/SpeechRecognizerPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/LocationWhenInUsePermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/LocationAlwaysPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/MotionPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/MediaLibraryPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/BluetoothPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/TrackingPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/FaceIDPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/SiriPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'
pod 'PermissionsKit/HealthPermission', :git => 'https://github.com/sparrowcode/PermissionsKit'

Request Permission

import PermissionsKit
import NotificationPermission

Permission.notification.request {

}

Status Permission

import PermissionsKit
import NotificationPermission

let authorized = Permission.notification.authorized

Keys in Info.plist

You need to add some keys to the Info.plist file with descriptions, per Apple's requirements. You can get a plist of keys for permissions as follows:

let key = Permission.bluetooth.usageDescriptionKey

Do not use the description as the name of the key.

Localisation

If you use xliff localization export, keys will be create automatically. If you prefer do the localization file manually, you need to create InfoPlist.strings, select languages on the right side menu and add keys as keys in plist-file. See:

"NSCameraUsageDescription" = "Here description of usage camera";

Apple Review

Apple changed its review guidelines in June 2021. When requesting permissions, apps should require users to always request and make a decision whether to allow or decline the permission. For this reason, the close button in PermissionsKit is hidden by default. If you want to force show the close button, run the following code:

// Show & hide close button
controller.showCloseButton = true

// Enable or Disable drag intercation
controller.allowSwipeDismiss = true

Also changed the title for the button. Instead of allow now use continue. The Apple Review Team asked for this. For details, check out this issue.

Apps Using

If you use a PermissionsKit, add your application via Pull Request.