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.