Skip to content

Repository files navigation

PermissionsKit

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

Community

Navigate

Permissions

IconPermissionKey for Info.plistGet StatusMake Request
BluetoothNSBluetoothAlwaysUsageDescription, NSBluetoothPeripheralUsageDescription
CalendarNSCalendarsUsageDescription
CameraNSCameraUsageDescription
ContactsNSContactsUsageDescription
FaceIDNSFaceIDUsageDescription
HealthNSHealthUpdateUsageDescription, NSHealthShareUsageDescription
Location AlwaysNSLocationAlwaysAndWhenInUseUsageDescription
Location When In UseNSLocationWhenInUseUsageDescription
Media LibraryNSAppleMusicUsageDescription
MicrophoneNSMicrophoneUsageDescription
MotionNSMotionUsageDescription
Notification
Photo LibraryNSPhotoLibraryUsageDescription, NSPhotoLibraryAddUsageDescription
RemindersNSRemindersUsageDescription
SiriNSSiriUsageDescription
Speech RecognizerNSSpeechRecognitionUsageDescription
TrackingNSUserTrackingUsageDescription

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
letauthorized=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:

letkey=Permission.bluetooth.usageDescriptionKey

Warning 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";

Apps Using

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

About

Universal API for request permission and get its statuses.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages