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 真实权限的可能性
- 显示一个弹出窗口以邀请用户在权限被拒绝后重新启用权限
- 通过简单的配置管理,用户需要多少次重新启用权限(只一次、每小时一次、每天一次、每周一次、总是
😷 )
重要!
- 如果您想使用 Xcode 10,请在 4.2 版本的 swift 中指向版本 4.0.1
- 如果您想使用它与 Xcode 9,请指向任何之前的版本
构建状态
分支 | 状态 |
---|---|
主分支 | |
开发分支 |
目录
已实现的权限
- 摄像头
- 蓝牙
- 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
}
}
以下是一个使用 PMAlertController
的 ArekContacts
预启用弹出窗口的示例
如果您想显示一个原生的 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文件夹添加到您的项目中。
如何贡献
欢迎贡献
关于任何信息或请求,请随时在 Twitter 上联系我 (@ennioma)。
待办事项
- [] 提供一种方式在权限中注入自定义 PMAlertController
- [] 提供一种方式在调用权限的
init()
时注入弹出类型 - [] 更新 Swift 包管理器安装程序
许可和版权
许可证
AREK可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。
Arek网络版
致谢
图标由 Freepik
和 Flaticon
的 Vector Market
提供