PermissionsService 0.9.61

PermissionsService 0.9.61

测试已测试
语种语言 SwiftSwift
许可证 NOASSERTION
发布最新发布2019年4月
SPM支持 SPM

Sergiy LozaMax VitrukYuriy TrachOverSwiftHellen Soloviy 维护。



License Version Carthage compatible Swift Version iOS Platform By

自动请求和处理权限的简单方法。

  1. 为什么你会需要它?
  2. 功能
  3. 支持的权限类型
  4. 安装
    1. CocoaPods
    2. Carthage
  5. 如何使用
  6. 配置
    1. 自定义警告消息
    2. 位置权限
  7. 要求
  8. 作者
  9. 许可证

为什么你会需要它?

这个库可以很容易地处理 notDeterminedauthorisedrestricteddenied 的情况,而不必自己来做。不再需要对手动处理 restricteddenied 的情况做错误处理,创建并向用户显示特定的警报。当然,它不是一个万能的解决方案,但它是你项目中的一个很好的工具!

功能

  • 通过 Configuration 自定义或本地化警告消息
  • 自动创建和显示警告
  • 用户可以轻松地在设置中更改权限的机会
  • CoreLocation 权限返回用户决策的完成块
  • 示例项目,便于理解框架

支持权限类型

  • 相机
  • 通讯录
  • 事件
  • 相册
  • 位置
  • 媒体库
  • 麦克风
  • 提醒
  • Siri
  • 语音识别

CocoaPods 安装方法

ios-permissions-service 可通过 CocoaPodsCarthage 使用

CocoaPods

安装方法,只需将以下一行或多行添加到您的 Podfile 中:

  pod "PermissionsService/Location"
  pod "PermissionsService/Camera"

您可在此处找到可用的完整权限列表:这里

如果您需要,还有一个关于 Swift 3/4 的版本记录在单独的分支中

现在您需要从项目文件夹中运行 pod update 命令,这样就完成了!

Carthage

  1. 将以下行添加到您的 Cartfile 中
  github "lemberg/ios-permissions-service"

如果您想使用另一个 Swift 版本的具体分支,可以添加分支名称

github "lemberg/ios-permissions-service" "swift4"
  1. 从项目文件夹中运行 carthage update --platform iOS 命令。

  2. 找到 Carthage/Build 文件夹,位于您的项目文件夹中。将 PermissionsService.framework 文件拖放到项目设置中 General 选项卡下的 Linked Frameworks and Libraries 部分。

  3. 转到 Build Phases 设置选项卡。如果您还没有新建运行脚本阶段,点击“+”图标并选择 New Run Script Phase。将以下行添加到脚本中

  /usr/local/bin/carthage copy-frameworks
  1. Input Files 下添加框架路径
  $(SRCROOT)/Carthage/Build/iOS/PermissionsService.framework
  1. 将框架路径添加到 Output Files
  $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/PermissionsService.framework

您可以在 这里 找到有关使用和配置 Carthage 的更多信息。

注意!

关于安装,由于 Apple 的政策存在一个重要的注意事项。由于关于权限访问的政策,二进制文件可能会因为被认为是不带使用密钥访问隐私敏感数据而被拒绝,然后进一步被拒绝,因为没有请求权限。这个错误会在您尝试上传到 itunesconnect 时发生。

但有一个 解决方案。您需要在构建动态框架之前提供自定义构建标志,只编译您请求的权限。

  1. 前往项目根目录并添加名为 PermissionConfiguration.xcconfigxcconfig 文件。您可以在这里找到此类文件的示例:链接

  2. 注释掉不希望使用的行,如下所示

    
    PERMISSION_CAMERA            = PERMISSION_CAMERA
    PERMISSION_CONTACTS          = // PERMISSION_CONTACTS
    

这里有一个仅使用 Camera 权限的示例。将无法访问 Contacts 权限。

  1. 现在可以运行 carthage update --platform iOS 来编译框架。

如果您需要更改可用的权限,请转到 PermissionConfiguration.xcconfig 文件并修改它。然后再次更新框架。

如何使用

  1. 根据选择的权限类型配置您所需的所有项目设置。例如,在相册的情况下,向您的 .plist 文件添加一个特定的键。

  2. 在您的类中实现 Permissible 协议。如果不是 UIVIewController 类,则应实现 showAlert(_:) 方法;如果是,则存在默认实现,您可以直接留空。

  3. 添加一个 Permission<T: PermissionService> 对象,其中包含您需要的类型,并使用 prepare(_:) 方法请求权限并向用户展示警报。

  Permission<Gallery>.prepare(for: self, callback: { (granted) in
      if granted {
          //present library
      } else {
          //perform specific functions 
      }
    })

这是使用默认权限设置的一个简单示例。

请注意,名为 EventsCalendar 权限服务。

  1. 享受吧!

配置

如果您需要,这个库提供了进行自定义或配置的机会。

配置消息

您可以通过创建一个新的符合 ServiceMessages 协议的 struct 来添加自定义的 deniedrestricted 情况下的警报消息。

struct CameraMessages: ServiceMessages {
    
    let deniedTitle = "Access denied"
    let deniedMessage = "You can enable access to camera in Privacy Settings"
    let restrictedTitle = "Access restricted"
    let restrictedMessage = "Access to camera is restricted"
    
}

要使用您自定义的消息,您需要使用 DefaultConfiguration 类。让我们来初始化它!

   let config = DefaultConfiguration(with: CameraMessages())

现在请将其放入 prepare(_:) 方法中,如下所示

  Permission<Camera>.prepare(for: self, with: config) { (granted) in
     if granted {
         print("Granted")
     } else {
         print("Error")
     }

 }

位置权限类型

如您所知,您可以请求两种类型的用户位置权限: WhenInUseAlways。要选择它,您需要使用配置。类 LocationConfigurationDefaultConfiguration 的子类,使用方式相同。

您可以通过类型来初始化它。

      let config = LocationConfiguration(.always)

或者,您可以使用它与您的消息一起使用。

     let config = LocationConfiguration(.always, with: CustomLocationMessages())

然后只需将其放入您的 prepare(_:) 方法中即可,就像您已经使用 DefaultConfiguration 那样。

  Permission<Location>.prepare(for: self, with: config) { (granted) in
     if granted {
         print("Granted")
     } else {
         print("Error")
     }

 }

如果您还有任何问题或问题(也许是改进!)请随时打开新的问题或PR。

需求

  • Swift Version
  • iOS Platform
  • Xcode Version

作者

Lemberg Solutions

iOS Platform

许可证

ios-permissions-service 在 BSD 许可证 下可用。有关更多信息,请参阅 LICENSE 文件。