PermissionsKit
是 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+
info.plist 中需要 NSCalendarsUsageDescription
键。
通讯录
10.11+
Info.plist 中需要 NSContactsUsageDescription
键
提醒事项
10.9+
Info.plist 中需要 NSRemindersUsageDescription
键
照片
10.13+
Info.plist 中需要包含 NSPhotoLibraryUsageDescription
键
完整磁盘访问
10.14+
由于 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 目标
有用的链接
许可证
MIT 许可证
版权(c)2018 MacPaw
在此特此授权,任何人无需支付任何费用即可获取本软件及其相关文档文件(以下简称“软件”)的副本,可以进行以下操作,不限于:使用、复制、修改、合并、发布、分发、许可并/或销售软件副本,并允许将软件提供给他人以进行上述操作,但受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按照“原样”提供,不提供任何形式的保证,无论明示还是暗示,包括但不限于对适销性、特定用途适用性及非侵犯性的保证。在任何情况下,作者或版权持有者不对任何索赔、损害或其他责任负责,无论这些责任是基于合同、侵权或其他法律行为,无论这些责任是否与软件或其使用或其他操作有关。