PrivMX DOCS
Swift

Handling Events

Registering callbacks for events.

How to subscribe to events, assuming you have already started listening.

Connection

let request : PMXEventSubscriptionRequest = PMXEventSubscriptionRequest.library(
    eventType:LibEventType.LIB_CONNECTED)

try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: request,
        group: "SOME_GROUP",
        cb: {_ in
            // Some actions to perform after connecting
        }))

try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .library(
            eventType: .LIB_DISCONNECTED),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when lib disconnects
        }))

try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .library(
            eventType: .LIB_PLATFORM_DISCONNECTED),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when disconect method was called
        }))

Core

try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .core(
            eventType: privmx.endpoint.core.USER_ADD,
            contextId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when new User is added to context
        }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .core(
            eventType: privmx.endpoint.core.USER_REMOVE,
            contextId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when a User is removed from context
        }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .core(
            eventType: privmx.endpoint.core.USER_STATUS,
            contextId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when the status of Users changes
        }))

Threads

let threadId = "THREAD_ID"
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .thread(
            eventType: privmx.endpoint.thread.THREAD_CREATE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a new thread created
    }))
    
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .thread(
            eventType: privmx.endpoint.thread.THREAD_UPDATE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a thread is updated
    }))
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .thread(
            eventType: privmx.endpoint.thread.THREAD_UPDATE,
            selectorType: .Container,
            selectorId: threadId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a thread is updated
    }))
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .thread(
            eventType: privmx.endpoint.thread.THREAD_STATS,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a thread's stats change
    }))
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .thread(
            eventType: privmx.endpoint.thread.THREAD_STATS,
            selectorType: .Container,
            selectorId: threadId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a thread's stats change
    }))
    
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .thread(
            eventType: privmx.endpoint.thread.THREAD_DELETE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a thread is deleted
    }))
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .thread(
            eventType: privmx.endpoint.thread.THREAD_DELETE,
            selectorType: .Container,
            selectorId: threadId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a thread is deleted
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .thread(
            eventType: privmx.endpoint.thread.COLLECTION_CHANGE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when any thread's contents change
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .thread(
            eventType: privmx.endpoint.thread.COLLECTION_CHANGE,
            selectorType: .Container,
            selectorId: threadId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a particular thread's contents change
    }))

Read more about Thread events.

Stores

let storeId = "STORE_ID"
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .store(
            eventType: privmx.endpoint.store.STORE_CREATE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a new store is created
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .store(
            eventType: privmx.endpoint.store.STORE_UPDATE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when any store is updated
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .store(
            eventType: privmx.endpoint.store.STORE_UPDATE,
            selectorType: .Container,
            selectorId: storeId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a particular store is updated
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .store(
            eventType: privmx.endpoint.store.STORE_DELETE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when any store is deleted
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .store(
            eventType: privmx.endpoint.store.STORE_DELETE,
            selectorType: .Container,
            selectorId: storeId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a particular store is deleted
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .store(
            eventType: privmx.endpoint.store.STORE_STATS,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when any store's stats change
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .store(
            eventType: privmx.endpoint.store.STORE_STATS,
            selectorType: .Container,
            selectorId: storeId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a particular store's stats change
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .store(
            eventType: privmx.endpoint.store.COLLECTION_CHANGE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when any store's contents change
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .store(
            eventType: privmx.endpoint.store.COLLECTION_CHANGE,
            selectorType: .Container,
            selectorId: storeId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a particular store's contents change
    }))

Read more about Store events.

Inboxes

let inboxId = "INBOX_ID"
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .inbox(
            eventType: privmx.endpoint.inbox.INBOX_CREATE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when a new inbox is created
        }))
    
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .inbox(
            eventType: privmx.endpoint.inbox.INBOX_UPDATE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when any inbox is updated
        }))
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .inbox(
            eventType: privmx.endpoint.inbox.INBOX_UPDATE,
            selectorType: .Container,
            selectorId: inboxId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when a particular inbox is updated
        }))
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .inbox(
            eventType: privmx.endpoint.inbox.INBOX_DELETE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when any inbox is deleted
        }))
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .inbox(
            eventType: privmx.endpoint.inbox.INBOX_DELETE,
            selectorType: .Container,
            selectorId: inboxId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when a particular inbox is deleted
        }))
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .inbox(
            eventType: privmx.endpoint.inbox.COLLECTION_CHANGE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when any inbox's contents chenge
        }))
try? endpointSession?.registerCallback(
    for: PMXEventCallbackRegistration(
        request: .inbox(
            eventType: privmx.endpoint.inbox.COLLECTION_CHANGE,
            selectorType: .Container,
            selectorId: inboxId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
            // some actions when a particular inbox's contents change
        }))

Read more about Inbox events.

KVDBs

let kvdbId = "KVDB_ID"
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .kvdb(
            eventType: privmx.endpoint.kvdb.KVDB_CREATE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a new kvdb is created
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .kvdb(
            eventType: privmx.endpoint.kvdb.KVDB_UPDATE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when any kvdb is updated
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .kvdb(
            eventType: privmx.endpoint.kvdb.KVDB_UPDATE,
            selectorType: .Container,
            selectorId: kvdbId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a particular kvdb is updated
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .kvdb(
            eventType: privmx.endpoint.kvdb.KVDB_DELETE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when any kvdb is deleted
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .kvdb(
            eventType: privmx.endpoint.kvdb.KVDB_DELETE,
            selectorType: .Container,
            selectorId: kvdbId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a particular kvdb is deleted
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .kvdb(
            eventType: privmx.endpoint.kvdb.KVDB_STATS,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when any kvdb's stats change
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .kvdb(
            eventType: privmx.endpoint.kvdb.KVDB_STATS,
            selectorType: .Container,
            selectorId: kvdbId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a particular kvdb's stats change
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .kvdb(
            eventType: privmx.endpoint.kvdb.COLLECTION_CHANGE,
            selectorType: .Context,
            selectorId: CONTEXT_ID),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when any kvdb's contents change
    }))
try? endpointSession?.registerCallback(
    for:PMXEventCallbackRegistration(
        request: .kvdb(
            eventType: privmx.endpoint.kvdb.COLLECTION_CHANGE,
            selectorType: .Container,
            selectorId: kvdbId),
        group: "SOME_UNIQUE_IDENTIFIER",
        cb:{ eventData in
        // some actions when a particular kvdb's contents change
    }))  

Read more about KVDB events.

We use cookies on our website. We use them to ensure the proper functioning of the site and, if you agree, for purposes we set, such as analytics or marketing.

On this page