# 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.