iOS Lib Overview

Monterosa / Interaction Cloud (M/IC) was previously known as LViS. As such, you will find API documentation using the term.

Add to project

Add to your Cartfile file
git "[email protected]:mobile/lvis_ios.git" "master"


The LViS library internally depends on Enmasse library and its dependencies
git "[email protected]:mobile/enmasse_ios.git" "swift_3"
github "SwiftyJSON/SwiftyJSON" ~> 3.1.4
github "Alamofire/Alamofire" == 4.8.0

LViS library structure

There are 4 basic blocks that you need to work with:
  • LViS - is an entry point to work with LViS lib
  • Project - is an entity that represents an 'LViS Project'
  • Event - is an entity that represents an 'LViS Event'
  • Elements - are entities that represent 'LViS Elements'

How to use

To listen to LViS changes you need to set delegate:
LViS.sharedInstance.delegate = self
Where LViSDelegate is
public protocol LViSDelegate: class {
func onInitialized(_ reinitialize: Bool)
func onScheduleReinitialize(_ delay: Double)
func onEventPublished(_ event: Event)
func onSettingsChanged()
func onMessageReceived(_ message: Message)
LViS needs to be initialized with projectUuid and host
func setProject(host: String, projectuuId: String)
It's possible to load App Setup before connecting to LViS
func loadSettings(_ completion: @escaping ((_ settings: JSON?, _ error: Error?) -> Void))
To open LViS
func open()
After you've connected, you can get all events
func getAllEvents() -> [Event]
To subscribe to an event
func subscribe(_ event: Event, completion: @escaping ((_ success: Bool, _ error: Error?) -> Void))
When you've subscribed to event you can listen to its changes:
open var onUpdated: (() -> Void)?
open var onStateChanged: ((Event.State) -> Void)?
open var onElementPublished: ((Element) -> Void)?
open var onElementUpdated: ((Element) -> Void)?
open var onElementRevoked: ((Element) -> Void)?
From an event you can get all elements that are created inside. You can listen to each element's changes. For example, to listen to Regular poll's changes:
if let regularPoll = element as? BasePoll {
regularPoll.onVote = {}
regularPoll.onResults = {
let results = regularPoll.results
let resultsPerSource = regularPoll.resultsPerSource
let votersPerSource = regularPoll.votersPerSource
regularPoll.onStateChanged = { state in
After you've done with LViS you need to close it to clean resources:
func close()
If you need to manage logs:
Log.enableTags(tags: [String]) //Supported tags are [String(TransportApi), String(Enmasse), String(LViS)]
Log.onLogged = { logMessage in