由 Xmartlabs SRL 提供。
简介
Ecno 受到 Once Android 库的启发。它是一个基于 UserDefaults 的纯 Swift 4 构建的任务状态管理器。这种抽象允许您将“任务”标记为已完成、待办并检查这些状态。
Ecno 适用于
- 在应用程序内仅显示一次教程。
- 周期性地执行某些任务。
- 根据用户操作触发一个任务。
使用方法
首先您需要初始化它
Ecno.initialize()
注意:您应该在应用程序启动时初始化它。
然后,您可以检查一个任务是否完成
if !Ecno.beenDone("task") {
//...
Ecno.markDone("task")
}
您还可以检查关于特定任务的特定要求
if Ecno.beenDone("task", scope: .appSession, numberOfTimes: .moreThan(3)) {
// do stuff
}
或者
if Ecno.beenDone("task", scope: .since(20.minutes), numberOfTimes: .lessThan(3)) {
// do stuff
}
此外,您可以通过以下方式编程一个“待办”任务
Ecno.toDo("show banner", scope: .until(3.hours), info: ["name": "bannerName"])
然后查询是否需要执行该任务
if Ecno.needToDo("show banner") {
let info = Ecno.infoForToDo("show banner") // ["name": "bannerName"]
// ...
}
任务
任何符合 Task
协议的类型。由于这将是最常见的用例,所以 String
类型已经符合 Task
。
public protocol Task {
var tag: String { get }
}
范围
范围表示应用程序中的时间段。
.appInstall
这个时间段表示应用程序的所有时间。.appVersion
从安装当前应用程序版本开始的时间段。.appSession
从启动应用程序开始的时间段。.since(TimeInterval)
从现在起的TimeInterval
时间段开始。例如,.since(2.days)
.until(TimeInterval)
从现在起的TimeInterval
有效的时段。例如,.until(3.hours)
。这可以用来设置一个将过期的“待办事项”。
函数
func toDo(_ task: Task, scope: Scope? = nil, info: [AnyHashable: Any]? = nil)
在给定范围内标记任务为“待办”,如果已经在该范围内标记为“待办”或已完成,则不会重新标记。如果范围是 nil,则仍会标记为“待办”。func needToDo(_ task: Task) -> Bool
检查任务是否当前标记为“待办”。func infoForToDo(_ task: Task) -> [AnyHashable: Any]?
获取与“待办”任务关联的信息。(仅在toDo(...)
函数中提供时)func lastDone(_ task: Task) -> Date?
给定任务的最后完成时间戳。func beenDone(_ task: Task, scope: Scope = .appInstall, numberOfTimes: CountChecker = .moreThan(0)) -> Bool
检查任务是否符合给定要求。func markDone(_ task: Task)
标记任务为已完成。
要求
- iOS 8.0+
- Swift 4.0+
- Xcode 9.0+
参与贡献
- 如果您想 贡献,请随时 提交 pull requests。
- 如果您有 功能请求,请 创建问题。
- 如果您发现 错误 或需要 帮助,请 检查旧问题。
在参与贡献之前,请查阅 CONTRIBUTING 文件以获取更多信息。
如果您在您的应用中使用了 Ecno,我们非常乐意了解相关信息!请在 twitter 上联系我们。
示例
按照以下 3 个步骤运行示例项目
- 克隆 Ecno 仓库
- 打开 Ecno 工作空间并运行 示例 项目。
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。
要安装 Ecno,请在 Podfile 中添加以下行
pod 'Ecno', '~> 3.0'
Carthage
Carthage 是 Cocoa 的一个简单的、分布式的依赖管理器。
要安装 Ecno,只需在 Cartfile 中添加以下行
github "xmartlabs/Ecno" ~> 3.0
作者
变更日志
可在CHANGELOG.md 文件中找到。