# PermissionsKit **Repository Path**: yanjiazhen/PermissionsKit ## Basic Information - **Project Name**: PermissionsKit - **Description**: 用于请求权限并获取其状态的通用 API - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-02 - **Last Updated**: 2023-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PermissionsKit Universal API for request permission and get its statuses. Available `.authorized`, `.denied` & `.notDetermined`.

### Community

## Navigate - [Permissions](#permissions) - [Installation](#installation) - [Swift Package Manager](#swift-package-manager) - [CocoaPods](#cocoapods) - [Usage](#request-permission) - [Request Permission](#request-permission) - [Status Permission](#status-permission) - [Keys in Info.plist](#keys-in-infoplist) - [Localisations](#localisation) - [Apps Using](#apps-using) ### 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 Project -> Your Project Name -> `Package Dependencies` -> Tap *Plus*. Insert url: ``` https://github.com/sparrowcode/PermissionsKit ``` Next, choose the permissions you need. But don't add all of them, because apple will reject app. Or adding it to the `dependencies` of your `Package.swift`: ```swift dependencies: [ .package(url: "https://github.com/sparrowcode/PermissionsKit", .upToNextMajor(from: "9.0.0")) ] ``` and choose valid targets. ### CocoaPods: This is an outdated way of doing things. I advise you to use [SPM](#swift-package-manager). However, I will continue to support Cocoapods for some time.
Cocoapods Instalation [CocoaPods](https://cocoapods.org) is a dependency manager. For usage and installation instructions, visit their website. To integrate using CocoaPods, specify it in your `Podfile`: ```ruby 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. ```ruby 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 ```swift import PermissionsKit import NotificationPermission Permission.notification.request { } ``` ## Status Permission ```swift 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: ```swift let key = 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.