Swift SDK,用户请求对蓝牙
、日历
、相机
、通讯录
、面部识别
、健康
、位置
、媒体库
、麦克风
、运动
、通知
、相册
、提醒事项
、Siri
、语音识别
、追踪
的权限
根据苹果的要求,您需要向
Info.plist
文件中添加一些带描述的键。您可以在权限类型的标题中看到这些键。
- iOS 11.0+
- Swift 5.0+
CocoaPods
将以下行添加到您的Podfile
pod 'OYPermission'
Swift包管理器
将OYPermission作为依赖项添加到您的Package.swift
文件,并指定OYPermission作为目标依赖项
import PackageDescription
let package = Package(
name: "YOUR_PROJECT_NAME",
targets: [],
dependencies: [
.package(url: "https://github.com/osmanyildirim/OYPermission", .upToNextMinor(from: "1.0")),
],
targets: [
.target(
name: "YOUR_PROJECT_NAME",
dependencies: ["OYPermission"])
]
)
应用程序的设置页面可以像以下这样打开。
OYPermission.openSettings(.noPopup) {
/// do stuff
}
OYPermission.openSettings(.withPopup(title: "Title", message: "Message")) {
/// do stuff
}
您需要在Info.plist文件中添加
NSBluetoothAlwaysUsageDescription
和NSBluetoothPeripheralUsageDescription
键及其描述以请求蓝牙权限
... 请求蓝牙权限 ...
OYPermission.bluetooth.request { granted, error in
/// do stuff
}
... 蓝牙权限状态,返回状态枚举值 ...
OYPermission.bluetooth.status
... 需要在Info.plist文件中定义的键以便请求蓝牙权限 ...
OYPermission.bluetooth.descriptionKeys
... 请求日历权限 ...
OYPermission.calendar.request { granted, error in
/// do stuff
}
... 日历权限状态,返回状态枚举值 ...
OYPermission.calendar.status
... 需要在Info.plist文件中定义的键以便请求日历权限 ...
OYPermission.calendar.descriptionKeys
... 请求相机权限 ...
OYPermission.camera.request { granted, error in
/// do stuff
}
... 相机权限状态,返回状态枚举值 ...
OYPermission.camera.status
... 需要在Info.plist文件中定义的键以便请求相机权限 ...
OYPermission.camera.descriptionKeys
... 请求通讯录权限 ...
OYPermission.contacts.request { granted, error in
/// do stuff
}
... 通讯录权限状态,返回状态枚举值 ...
OYPermission.contacts.status
... 需要在Info.plist文件中定义的键以便请求通讯录权限 ...
OYPermission.contacts.descriptionKeys
您需要在 Info.plist 文件中添加
NSFaceIDUsageDescription
键及其描述,以便请求 FaceID 权限
... 请求 FaceID 权限 ...
OYPermission.faceID.request { granted, error in
/// do stuff
}
... FaceID 的权限状态,返回 状态 枚举值 ...
OYPermission.faceID.status
... 在 Info.plist 文件中需要定义的键,以便请求 FaceID 权限 ...
OYPermission.faceID.descriptionKeys
您需要在 Info.plist 文件中添加
NSHealthUpdateUsageDescription
和NSHealthShareUsageDescription
键及其描述,以便请求 Health 权限
... 请求 Health 权限 ...
let shareTypes: Set<HKSampleType> = [.workoutType()]
let readTypes: Set<HKSampleType> = [.workoutType()]
OYPermission.health.request(shareTypes: shareTypes, readTypes: readTypes) { granted, error in
/// do stuff
}
... 使用 HKObjectType
返回 Health 的权限状态,返回 状态 枚举值 ...
OYPermission.health.status(for: .activitySummaryType())
OYPermission.health.status(for: .workoutType())
... 在 Info.plist 文件中需要定义的键,以便请求 Health 权限 ...
OYPermission.health.descriptionKeys
您需要在 Info.plist 文件中添加
NSLocationAlwaysAndWhenInUseUsageDescription
和NSLocationWhenInUseUsageDescription
键及其描述,以便请求 LocationAlways 权限
... 请求 LocationAlways 权限 ...
OYPermission.location(.always).request { granted, error in
/// do stuff
}
... LocationAlways 的权限状态,返回 状态 枚举值 ...
OYPermission.location(.always).status
... 在 Info.plist 文件中需要定义的键,以便请求 LocationAlways 权限 ...
OYPermission.location(.always).descriptionKeys
🎈 提示:
locationStatus
提供了对LocationAlways
和LocationWhenInUse
的状态。可用于同时或分别用于 LocationAlways 和 LocationWhenInUse。locationStatus 返回
.notDetermined
、.authorizedAlways
、.authorizedWhenInUse
和.denied
OYPermission.locationStatus
您需要在 Info.plist 文件中添加
NSLocationAlwaysAndWhenInUseUsageDescription
键及其描述,以便请求 LocationWhenInUse 权限
... 请求 LocationWhenInUse 权限 ...
OYPermission.location(.whenInUse).request { granted, error in
/// do stuff
}
... LocationWhenInUse 的权限状态,返回 状态 枚举值 ...
OYPermission.location(.whenInUse).status
... 在 Info.plist 文件中需要定义的键,以便请求 LocationWhenInUse 权限 ...
OYPermission.location(.whenInUse).descriptionKeys
🎈 提示:
locationStatus
提供了对LocationAlways
和LocationWhenInUse
的状态。可用于同时或分别用于 LocationAlways 和 LocationWhenInUse。locationStatus 返回
.notDetermined
、.authorizedAlways
、.authorizedWhenInUse
和.denied
OYPermission.locationStatus
您需要在 Info.plist 文件中添加
NSAppleMusicUsageDescription
键及其描述,以便请求媒体库权限
... 请求媒体库权限 ...
OYPermission.mediaLibrary.request { granted, error in
/// do stuff
}
... 媒体库的权限状态,返回 状态 枚举值 ...
OYPermission.mediaLibrary.status
... 在 Info.plist 文件中需要定义的键,以便请求媒体库权限 ...
OYPermission.mediaLibrary.descriptionKeys
您需要在 Info.plist 文件中添加
NSMicrophoneUsageDescription
键及其描述,以便请求麦克风权限
... 请求麦克风权限 ...
OYPermission.microphone.request { granted, error in
/// do stuff
}
... 麦克风权限状态,返回 状态 枚举值 ...
OYPermission.microphone.status
... 在 Info.plist 文件中需要定义的键,以便请求麦克风权限 ...
OYPermission.microphone.descriptionKeys
您需要在 Info.plist 文件中添加
NSMotionUsageDescription
键及其描述,以便请求运动权限
... 请求运动权限 ...
OYPermission.motion.request { activities, error in
/// do stuff
}
... 运动权限状态,返回 状态 枚举值 ...
OYPermission.motion.status
... 在 Info.plist 文件中需要定义的键,以便请求运动权限 ...
OYPermission.motion.descriptionKeys
您需要将
NSUserNotificationsUsageDescription
键及其描述添加到 Info.plist 文件,以请求通知权限
... 请求通知权限 ...
OYPermission.notifications.request { granted, error in
/// do stuff
}
... 通知权限状态,返回 状态 枚举值 ...
OYPermission.notifications.status
... 需要在 Info.plist 文件中定义的键,以请求通知权限 ...
OYPermission.notifications.descriptionKeys
您需要将
NSPhotoLibraryAddUsageDescription
键及其描述添加到 Info.plist 文件,以请求照片(仅添加)权限
... 请求照片(仅添加)权限 ...
OYPermission.photos(.addOnly).request { granted, error in
/// do stuff
}
... 照片(仅添加)权限状态,返回 状态 枚举值 ...
OYPermission.photos(.addOnly).status
... 需要在 Info.plist 文件中定义的键,以请求照片(仅添加)权限 ...
OYPermission.photos(.addOnly).descriptionKeys
您需要将
NSPhotoLibraryAddUsageDescription
和NSPhotoLibraryUsageDescription
键及其描述添加到 Info.plist 文件,以请求照片(完全访问)权限
... 请求照片(完全访问)权限 ...
OYPermission.photos(.fullAccess).request { granted, error in
/// do stuff
}
... 照片(完全访问)权限状态,返回 状态 枚举值 ...
OYPermission.photos(.fullAccess).status
... 需要在 Info.plist 文件中定义的键,以请求照片(完全访问)权限 ...
OYPermission.photos(.fullAccess).descriptionKeys
您需要将
NSRemindersUsageDescription
键及其描述添加到 Info.plist 文件,以请求提醒权限
... 请求提醒权限 ...
OYPermission.reminders.request { granted, error in
/// do stuff
}
... 提醒权限状态,返回 状态 枚举值 ...
OYPermission.reminders.status
... 需要在 Info.plist 文件中定义的键,以请求提醒权限 ...
OYPermission.reminders.descriptionKeys
您需要将
NSSiriUsageDescription
键及其描述添加到 Info.plist 文件,以请求 Siri 权限
... 请求 Siri 权限 ...
OYPermission.siri.request { granted, error in
/// do stuff
}
... Siri 权限状态,返回 状态 枚举值 ...
OYPermission.siri.status
... 需要在 Info.plist 文件中定义的键,以请求 Siri 权限 ...
OYPermission.siri.descriptionKeys
您需要将
NSSpeechRecognitionUsageDescription
键及其描述添加到 Info.plist 文件,以请求语音识别权限
... 请求语音识别权限 ...
OYPermission.speechRecognition.request { granted, error in
/// do stuff
}
... 语音识别权限状态,返回 状态 枚举值 ...
OYPermission.speechRecognition.status
... 需要在 Info.plist 文件中定义的键,以请求语音识别权限 ...
OYPermission.speechRecognition.descriptionKeys
您需要将
NSUserTrackingUsageDescription
键及其描述添加到 Info.plist 文件,以请求追踪权限
... 请求追踪权限 ...
OYPermission.tracking.request { granted, error in
/// do stuff
}
... 追踪权限状态,返回 状态 枚举值 ...
OYPermission.tracking.status
... 需要在 Info.plist 文件中定义的键,以请求追踪权限 ...
OYPermission.tracking.descriptionKeys
enum Status {
/// User grants access
case authorized
/// User grants access to location when in use
case authorizedWhenInUse
/// User grants access to location always
case authorizedAlways
/// User denies access
case denied
/// User has not been asked for access yet
case notDetermined
/// Unsupported this permission
case notSupported
/// Access is restricted by the system
case restrictedBySystem
/// Unknown status of permission
case unknown
}
OYPermission 在 MIT 许可下发布。有关详细信息,请参阅 LICENSE。