PermissionsKit-macOS 1.0.1

PermissionsKit-macOS 1.0.1

Serg Krivoblotsky 维护。



PermissionsKit

CI Status Version Carthage Compatible Platform License

Calendar

是 macOS 权限 API 方便的包装。

当前实现支持以下权限

使用

可用类型

typedef NS_ENUM(NSUInteger, MPPermissionType) {
    MPPermissionTypeCalendar = 0,
    MPPermissionTypeReminders,
    MPPermissionTypeContacts,
    MPPermissionTypePhotos,
    MPPermissionTypeFullDiskAccess
} NS_SWIFT_NAME(PermissionType);

获取权限状态

/**
 * Requests current authorization status for a given type.
 *
 * @discussion It is safe to call this method on system where permission type is not supported. MPAuthorizationStatusAuthorized will be returned.
 *
 * @param permissionType MPPermissionType
 * @return MPAuthorizationStatus
 */
+ (MPAuthorizationStatus)authorizationStatusForPermissionType:(MPPermissionType)permissionType;

请求权限

/**
 * Requests user authorization for a given permission. Completion will be invoked with a user decision. Completion queue is undefined.
 * @discussion There will be no completion when requesting MPPermissionTypeFullDiskAccess, because its status is unknown. You should implement your own callback mechanism, for example - polling authorization. It is safe to call this method on system where permission type is not supported. MPAuthorizationStatusAuthorized will be returned.
 *
 * @param permissionType MPPermissionType
 * @param completionHandler void (^)(MPAuthorizationStatus status)
 */
+ (void)requestAuthorizationForPermissionType:(MPPermissionType)permissionType withCompletion:(void (^)(MPAuthorizationStatus status))completionHandler;

日历

10.9+

Calendar

info.plist 中需要 NSCalendarsUsageDescription 键。

通讯录

10.11+

Contacts

⚠️使用 私有 API 进行权限调用,因为公开的 API 运行不正常。见 rdar://34158737

Info.plist 中需要 NSContactsUsageDescription

提醒事项

10.9+

Reminders

Info.plist 中需要 NSRemindersUsageDescription

照片

10.13+

⚠️仅限照片扩展使用。请参阅 rdar://34431396rdar://43426722

Info.plist 中需要包含 NSPhotoLibraryUsageDescription

完整磁盘访问

10.14+

FDA

由于 macOS 10.14 没有合法的 API 来请求完整磁盘访问权限,这是获取和请求它的唯一方法。

⚠️请求此类权限时不会有回调,因此您应该使用自己的实现,例如轮询权限状态,或者使用其他事件处理可能的权限变更(例如处理 NSApp 前台/后台状态)。调用权限会在“偏好设置”>“隐私”中打开,并选择“完整磁盘访问”部分。

应用沙盒

PermissionsKit 可用于沙盒中的应用程序。但该应用程序应能访问 Library/Safari/Bookmarks.plist 文件。您可以通过安全受限制的书签流程来完成,更多详情请参阅 apple documentation 或者在测试目的下,您可以将临时异常添加到您的 .entitlements 文件中。

<key>com.apple.security.temporary-exception.files.home-relative-path.read-only</key>
<array>
	<string>Library/Safari/Bookmarks.plist</string>
</array>

有关更多详细信息,请查看 完整磁盘访问 的详细信息。

安装

CocoaPods

PermissionsKit 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中

pod 'PermissionsKit-macOS'

Carthage

PermissionsKit 可通过 Carthage 获取。要安装它,简单地将以下行添加到您的 Cartfile 中

github "MacPaw/PermissionsKit"

手工安装

对于手工安装,只需选择最新的可用 发布版本,将框架拖放到您的项目中。(您可能还需要将其添加到嵌入式二进制文件)。

要求

macOS 10.9+。然而,不同种类的权限需要不同的系统版本,但在没有实际系统检查的情况下调用授权是安全的。《MPAuthorizationStatusAuthorized》将在这种情况下返回。

示例

查看 PermissionsKitTestApp 目标

TestAppScreenshot

有用的链接

许可证

MIT 许可证

版权(c)2018 MacPaw

在此特此授权,任何人无需支付任何费用即可获取本软件及其相关文档文件(以下简称“软件”)的副本,可以进行以下操作,不限于:使用、复制、修改、合并、发布、分发、许可并/或销售软件副本,并允许将软件提供给他人以进行上述操作,但受以下条件约束

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按照“原样”提供,不提供任何形式的保证,无论明示还是暗示,包括但不限于对适销性、特定用途适用性及非侵犯性的保证。在任何情况下,作者或版权持有者不对任何索赔、损害或其他责任负责,无论这些责任是基于合同、侵权或其他法律行为,无论这些责任是否与软件或其使用或其他操作有关。