arek 4.0.2

arek 4.0.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2018年10月
SPM支持 SPM

Ennio Masi 维护。



arek 4.0.2

AREK


Platform Version Pod Version Carthage compatible License Swift Version

AREK 是一个简洁且易于使用的 Swift 编写的任何iOS权限的包装器。

苹果如何详细描述 AREK 如何帮助您构建更好的应用,请参阅这里 这里

Request personal data only when your app clearly needs it.
...
Explain why your app needs the information if it’s not obvious.
...
Request permission at launch only when necessary for your app to function.
...

使用 AREK 可以轻松实现每个目标。

  • 显示一个原生弹出窗口,用于避免燃烧请求 iOS 真实权限的可能性
  • 显示一个弹出窗口以邀请用户在权限被拒绝后重新启用权限
  • 通过简单的配置管理,用户需要多少次重新启用权限(只一次、每小时一次、每天一次、每周一次、总是😷)

🚨AREK 是一个与 Swift 4.2Xcode 10 兼容的项目🚨

重要!

  • 如果您想使用 Xcode 10,请在 4.2 版本的 swift 中指向版本 4.0.1
  • 如果您想使用它与 Xcode 9,请指向任何之前的版本

构建状态

分支 状态
主分支 BuddyBuild
开发分支 BuddyBuild

目录

  1. 实现权限
  2. 如何使用 AREK
  3. 权限配置
  4. 如何安装 AREK
  5. 如何贡献
  6. 待办事项
  7. 许可证和致谢

已实现的权限

  • 摄像头
  • 蓝牙
  • CloudKit
  • 联系人之朋
  • 事件(日历)
  • 健康
  • 位置(始终启用)
  • 位置(使用时)
  • 媒体库
  • 麦克风
  • 动作
  • 通知
  • 照片
  • 提醒事项
  • Siri
  • 语音识别

如何使用AREK

检查权限状态

    let permission = ArekPhoto()

    permission.status { (status) in
        switch status {
        case .authorized:
            print("! ✅ !")
        case .denied:
            print("! ⛔️ !" )
        case .notDetermined:
            print("! 🤔 !" )
        case .notAvailable:
            print("! 🚫 !" )
        }
    }

请求权限

    let permission = ArekEvent()

    permission.manage { (status) in
        switch status {
        case .authorized:
            symbol = ""
        case .denied:
            symbol = "⛔️"
        case .notDetermined:
            symbol = "🤔"
        case .notAvailable:
            return "🚫"
        }
    }

权限配置

通用配置

AREK中包含的每种权限类型都可以通过ArekConfiguration结构配置。每种权限都有一个默认配置,因此如果您对基本配置满意,您不必关心其内部的工作方式。

ArekConfiguration由以下部分组成:

频率:ArekPermissionFrequency (.Always, .EveryHour, .OnceADay, .OnceAWeek, .JustOnce)。此频率值与用户再次启用被禁止的权限的频率相关。

默认设置为.OnceADay


presentInitialPopup: Bool 这是一种用于向用户礼貌地询问是否允许权限的初始弹出窗口。这有助于避免烧毁显示系统弹出窗口的可能性。

默认设置为 true


presentReEnablePopup: Bool 这是一个用于礼貌地提醒用户重新启用该权限的弹出窗口。与弹出窗口相关的 frequency 值与该弹出窗口相关。

默认设置为 true

配置初始和重新启用弹出窗口:ArekPopupData

ArekPopupData 是用于配置预权限弹出窗口和重新启用弹出窗口的结构。这些弹出窗口可以是由 Codeido 的出色 PMAlertController 或原生 iOS 提醒的实例。

配置如下

public struct ArekPopupData {
    var title: String!
    var message: String!
    var image: String!
    var type: ArekPopupType!

    public init(title: String = "", message: String = "", image: String = "", type: ArekPopupType = .codeido) {
        self.title = title
        self.message = message
        self.image = image
        self.type = type
    }
}

以下是一个使用 PMAlertControllerArekContacts 预启用弹出窗口的示例

如果您想显示一个原生的 UIAlertController,请将类型设置为 .native;否则,如果您想设置 PMAlertController,请将类型设置为 .codeido

本地化字符串

AREK 按照惯例应在 Localizable 文件中查找本地化字符串以配置 UI。

以下是表中的配置

  • 预权限弹出窗口标题
  • 预权限弹出窗口消息
  • 重新启用弹出窗口标题
  • 重新启用弹出窗口消息
  • 针对该权限的弹出窗口图像
  • 允许按钮标题
  • 拒绝按钮标题

有关 iOS 原生权限弹出窗口的消息应按照以下链接中描述的约定进行配置:这里

权限 预权限标题 预权限消息 重新启用标题 重新启用消息 图像 允许按钮标题 拒绝按钮标题
摄像头 ArekCamera_initial_title ArekCamera_initial_message ArekCamera_reenable_title ArekCamera_reenable_message ArekCamera_image ArekCamera_allow_button_title ArekCamera_deny_button_title
CloudKit ArekCloudKit_initial_title ArekCloudKit_initial_message ArekCloudKit_reenable_title ArekCloudKit_reenable_message ArekCloudKit_image ArekCloudKit_allow_button_title ArekCloudKit_deny_button_title
联系人之朋 ArekContacts_initial_title ArekContacts_initial_message ArekContacts_reenable_title ArekContacts_reenable_message ArekContacts_image ArekContacts_allow_button_title ArekContacts_deny_button_title
事件 ArekEvents_initial_title ArekEvents_initial_message ArekEvents_reenable_title ArekEvents_reenable_message ArekEvents_image ArekEvents_allow_button_title ArekEvents_deny_button_title
HealthKit ArekHealth_initial_title ArekHealth_initial_message ArekHealth_reenable_title ArekHealth_reenable_message ArekHealth_image ArekHealth_allow_button_title ArekHealth_deny_button_title
媒体库 ArekMediaLibrary_initial_title ArekMediaLibrary_initial_message ArekMediaLibrary_reenable_title ArekMediaLibrary_reenable_message ArekMediaLibrary_image ArekMediaLibrary_allow_button_title ArekMediaLibrary_deny_button_title
麦克风 ArekMicrophone_initial_title ArekMicrophone_initial_message ArekMicrophone_reenable_title ArekMicrophone_reenable_message ArekMicrophone_image ArekMicrophone_allow_button_title ArekMicrophone_deny_button_title
动作 ArekMotion_initial_title ArekMotion_initial_message ArekMotion_reenable_title ArekMotion_reenable_message ArekMotion_image ArekMotion_allow_button_title ArekMotion_deny_button_title
通知 ArekNotifications_initial_title ArekNotifications_initial_message ArekNotifications_reenable_title ArekNotifications_reenable_message ArekNotifications_image ArekNotifications_allow_button_title ArekNotifications_deny_button_title
照片库 ArekPhoto_initial_title ArekPhoto_initial_message ArekPhoto_reenable_title ArekPhoto_reenable_message ArekPhoto_image ArekPhoto_allow_button_title ArekPhoto_deny_button_title
提醒事项 ArekReminders_initial_title ArekReminders_initial_message ArekReminders_reenable_title ArekReminders_reenable_message ArekReminders_image ArekReminders_allow_button_title ArekReminders_ deny_button_title
Siri ArekSiri_initial_title ArekSiri_initial_message ArekSiri_reenable_title ArekSiri_reenable_message ArekSiri_image ArekSiri_allow_button_title ArekSiri_deny_button_title
语音识别 ArekSpeechRecognizer_initial_title ArekSpeechRecognizer_initial_message ArekSpeechRecognizer_reenable_title ArekSpeechRecognizer_reenable_message ArekSpeechRecognizer_image ArekSpeechRecognizer_allow_button_title ArekSpeechRecognizer_deny_button_title
蓝牙 ArekBluetooth_initial_title ArekBluetooth_initial_message ArekBluetooth_reenable_title ArekBluetooth_reenable_message ArekBluetooth_image ArekBluetooth_allow_button_title ArekBluetooth_deny_button_title
位置 ArekBaseLocation_initial_title ArekBaseLocation_initial_message ArekBaseLocation_reenable_title ArekBaseLocation_reenable_message ArekBaseLocation_image ArekBaseLocation_allow_button_title ArekBaseLocation_deny_button_title

如何安装AREK

CocoaPods

将AREK添加到您的Podfile

use_frameworks!
target 'MyTarget' do
    pod 'arek', '~> 2.0.2'
end

如果您只想安装特定的权限,例如蓝牙,您必须指定

use_frameworks!
target 'MyTarget' do
    pod 'arek/Bluetooth', '~> 2.0.2'
end
$ pod install

Carthage

github "ennioma/arek" ~> "2.0.2"

然后在选择您的应用程序目标的面板构建阶段设置标签页中,添加一个“新运行脚本阶段”。创建一个运行脚本,内容如下

/usr/local/bin/carthage copy-frameworks

并在“输入文件”下添加以下路径

$(SRCROOT)/Carthage/Build/iOS/arek.framework
$(SRCROOT)/Carthage/Build/iOS/PMAlertController.framework

Swift 包管理器

import PackageDescription

let package = Package(
  name: "YourApp",
  dependencies: [
    .Package(url: "https://github.com/ennioma/arek.git", versionMajor: 2, minor: 0)
  ]
)
  • 注意,如果您想要安装 Arek 的 Swift 3 版本,最新兼容的版本是 1.7.0
  • 如果您需要使用 Xcode 10 构建,您必须指向版本 3.0.0

将 AREK 源代码添加到项目中

https://github.com/ennioma/arek/tree/master/arek/arek/Arek文件夹添加到您的项目中。

🙏请注意将 ArekHealth 类添加到您的项目中。它将在您的项目中包含 HealthKit,因此在 AppStore 审查期间,如果没有使用 HealthKit 就这样做,您的应用将被拒绝。

如何贡献

欢迎贡献🙌如果您想改进我与社区共享的这个项目,只需从当前的 develop 分支打开一个问题或提出一个 PR。

关于任何信息或请求,请随时在 Twitter 上联系我 (@ennioma)。

待办事项

  • [] 提供一种方式在权限中注入自定义 PMAlertController
  • [] 提供一种方式在调用权限的 init() 时注入弹出类型
  • [] 更新 Swift 包管理器安装程序

许可和版权

许可证

AREK可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。

Arek网络版

  1. Swift本周更新 - Natasha The Robot
  2. iOS 开发周报 - Dave Verwer

致谢

图标由 FreepikFlaticonVector Market 提供