OYPermission 1.0.2

OYPermission 1.0.2

Osman YILDIRIM维护。



  • osmanyildirim

Cocoapods SPM compatible Platforms Swift Xcode MIT

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文件中添加NSBluetoothAlwaysUsageDescriptionNSBluetoothPeripheralUsageDescription键及其描述以请求蓝牙权限

... 请求蓝牙权限 ...

OYPermission.bluetooth.request { granted, error in
    /// do stuff
}

... 蓝牙权限状态,返回状态枚举值 ...

OYPermission.bluetooth.status

... 需要在Info.plist文件中定义的键以便请求蓝牙权限 ...

OYPermission.bluetooth.descriptionKeys

您需要在Info.plist文件中添加NSCalendarsUsageDescription键及其描述以请求日历权限

... 请求日历权限 ...

OYPermission.calendar.request { granted, error in
    /// do stuff
}

... 日历权限状态,返回状态枚举值 ...

OYPermission.calendar.status

... 需要在Info.plist文件中定义的键以便请求日历权限 ...

OYPermission.calendar.descriptionKeys

您需要在Info.plist文件中添加NSCameraUsageDescription键及其描述以请求相机权限

... 请求相机权限 ...

OYPermission.camera.request { granted, error in
    /// do stuff
}

... 相机权限状态,返回状态枚举值 ...

OYPermission.camera.status

... 需要在Info.plist文件中定义的键以便请求相机权限 ...

OYPermission.camera.descriptionKeys

您需要在Info.plist文件中添加NSContactsUsageDescription键及其描述以请求通讯录权限

... 请求通讯录权限 ...

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 文件中添加 NSHealthUpdateUsageDescriptionNSHealthShareUsageDescription 键及其描述,以便请求 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 文件中添加 NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription 键及其描述,以便请求 LocationAlways 权限

... 请求 LocationAlways 权限 ...

OYPermission.location(.always).request { granted, error in
    /// do stuff
}

... LocationAlways 的权限状态,返回 状态 枚举值 ...

OYPermission.location(.always).status

... 在 Info.plist 文件中需要定义的键,以便请求 LocationAlways 权限 ...

OYPermission.location(.always).descriptionKeys

🎈 提示:

locationStatus 提供了对 LocationAlwaysLocationWhenInUse 的状态。可用于同时或分别用于 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 提供了对 LocationAlwaysLocationWhenInUse 的状态。可用于同时或分别用于 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

您需要将 NSPhotoLibraryAddUsageDescriptionNSPhotoLibraryUsageDescription 键及其描述添加到 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