Home

Awesome

<img src="Ecno.png" style="margin: 0 auto; display: block"/> <p align="center"> <a href="https://travis-ci.org/xmartlabs/Ecno"><img src="https://travis-ci.org/xmartlabs/Ecno.svg?branch=master" alt="Build status" /></a> <img src="https://img.shields.io/badge/platform-iOS-blue.svg?style=flat" alt="Platform iOS" /> <a href="https://developer.apple.com/swift"><img src="https://img.shields.io/badge/swift5-compatible-4BC51D.svg?style=flat" alt="Swift 5 compatible" /></a> <a href="https://github.com/Carthage/Carthage"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat" alt="Carthage compatible" /></a> <a href="https://cocoapods.org/pods/Ecno"><img src="https://img.shields.io/cocoapods/v/Ecno.svg" alt="CocoaPods compatible" /></a> <a href="https://raw.githubusercontent.com/xmartlabs/Ecno/master/LICENSE"><img src="http://img.shields.io/badge/license-MIT-blue.svg?style=flat" alt="License: MIT" /></a> </p> <p align="center"> By <a href="https://xmartlabs.com/">Xmartlabs SRL</a>. </p>

Introduction

Ecno was inspired by Once Android library. It's a task state manager built on top of UserDefaults in pure Swift 4. This abstraction allows you to mark 'tasks' as done, 'to-do' and check for those states.

Ecno is ideal for:

Usage

First you need to initialize it:

Ecno.initialize()

Note: you should initialize it when your app gets launched.

Then, you can check whether a task was done by:

if !Ecno.beenDone("task") {
  //...
  Ecno.markDone("task")
}

Also, you can check for specific requirements about a certain task:

if Ecno.beenDone("task", scope: .appSession, numberOfTimes: .moreThan(3)) {
  // do stuff
}

or

if Ecno.beenDone("task", scope: .since(20.minutes), numberOfTimes: .lessThan(3)) {
  // do stuff
}

Additionally, you can program a 'to do' task by:

Ecno.toDo("show banner", scope: .until(3.hours), info: ["name": "bannerName"])

and then query if you need to do that task:

if Ecno.needToDo("show banner") {
  let info = Ecno.infoForToDo("show banner") // ["name": "bannerName"]
  // ...
}

Task

Any type conforming to the Task protocol. Since it would be the most common case, the String type already conforms to Task.

public protocol Task {

    var tag: String { get }

}

Scope

Scopes represents periods of time within the application.

Functions

Requirements

Getting involved

Before contribute check the CONTRIBUTING file for more info.

If you use Ecno in your app We would love to hear about it! Drop us a line on twitter.

Examples

Follow these 3 steps to run Example project:

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects.

To install Ecno, simply add the following line to your Podfile:

pod 'Ecno', '~> 3.0'

Carthage

Carthage is a simple, decentralized dependency manager for Cocoa.

To install Ecno, simply add the following line to your Cartfile:

github "xmartlabs/Ecno" ~> 3.0

Author

Change Log

This can be found in the CHANGELOG.md file.