UnbluCoreApi
@objc
open class UnbluCoreApi : NSObject
extension UnbluCoreApi: UnbluNotificationApiDelegate
The API to use to access unblu suite functionality like showing, opening conversations
Before calling any other function #configureApi should be called inside the AppDelegate.
Use the constants of UnbluEventApi to register for events and access their user info data
A typical flow for the usage would be:
AppDelegate#application() {
UnbluCoreApi.instance.configureApi(UnbluApiConfiguration(unbluBaseUrl: "<base-url>", apiKey: "<apiKey>"))
//register for general errors and/or also other events
NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.handleErrorEvent(notification:)), name: Notification.Name.UnbluError, object: nil)
//start the api. This could also be done later when it is needed, but it will take a while until the api is ready
UnbluCoreApi.instance.initApi(success: {<success handling>}, failure: {<error handling>})
}
SomeViewController#showConversations() {
//the conversations should be shown
UnbluCoreApi.instance.showUi(visible: true)
}
-
Enables the debug output of the Unblu SDK. This contains additional information on log messages and is independent of the log level defined with logLevel.
Declaration
Swift
public static var enableDebugOutput: Bool -
Enables logging of capturing performance (e.g. FPS)
IMPORTANT: This only has effect, if enableDebugOutput is set to true and the log level is set to debug via logLevel!
Declaration
Swift
public static var enableCapturingPerformanceLogging: Bool -
Defines the log level of the Unblu SDK. All messages with a lower level will not be logged.
Default value is
LogLevel.infoDeclaration
Swift
public static var logLevel: LogLevel -
Prevents the scrolling of the ui when the keyboard is shown/hidden
This setting should only be changed, if it does create issues. If it is disabled, the user of the sdk has to take care that the ui container/the webview inside is correctly resize if needed
Declaration
Swift
public static var preventScrollingByKeyboard: Bool -
The time used for the fade in and fade out animation when showing/hiding the ui
Declaration
Swift
public static let ANIMATION_TIME: TimeInterval -
As the Unblu SDK defines an own UIWindow with a UIViewController, iOS uses this controller to define the StatusBarStyle. There is no proper way of checking for the real active UIViewController from which this value should be taken. Therefor it is required to also set the correct StatusBarStyle for the UIViewController inside the SDK.
Declaration
Swift
@objc public dynamic var preferredStatusBarStyle: UIStatusBarStyle -
Custom loading view creator which is used whenever a loading view is displayed
Declaration
Swift
public var customLoadingViewCreator: UnbluCustomLoadingViewCreator? -
This is for internal purpose only!
Declaration
Swift
public let delegate: CoreApiDelegate -
The configuration for the main UnbluUIWindow (i.e. the UIWindow that contains displayable content like the WebView).
Declaration
Swift
public var uiWindowConfiguration: UnbluUIWindowConfiguration? { get } -
The configuration for the hidden UnbluUIWindow.
Declaration
Swift
public var hiddenUiWindowConfiguration: UnbluHiddenUIWindowConfiguration? { get } -
Internal access to the controller of the unblu UI
Declaration
Swift
public private(set) var uiController: UnbluUiController? { get } -
Internal driver. Needed to access driver from Visitor/Agent SDK
Declaration
Swift
public private(set) var driver: MobileDeviceDriverCoreApi? { get } -
The currently configured bottom margin of the UI
Declaration
Swift
public private(set) var uiBottomMargin: CGFloat { get } -
The currently configured top margin of the UI
Declaration
Swift
public private(set) var uiTopMargin: CGFloat { get } -
The instance of the UnbluCoreApi. This getter is for internal use only. Use the one from the agent/visitor api
Declaration
Swift
public private(set) static var internalInstance: UnbluCoreApi? { get } -
Internal constructor. Used by Agent/Visitor SDK
Declaration
Swift
public init(_ delegate: CoreApiDelegate, unbluNotificationApi: UnbluNotificationApi = .instance, systemEventsCoordinator: SystemEventsCoordinator = NotificationCenter.default)
-
Number of unread messages
Declaration
Swift
var unreadMessagesCount: Int { get } -
Configures the unblu api. Use #initializeApi() to be able start new conversation and use other API features.
Note:
- This should only be called once with the correct configuration.
This method should be called from the application function of the AppDelegate class.
- configuration: The configuration for the unblu api
Throws
Throws an error if the api was already initialized. The api needs to be deinitialized to configure it.
Declaration
Swift
func configureApi(configuration: UnbluApiConfiguration) throwsParameters
configurationThe configuration for the unblu api
-
Inits the unblu API.
This is an asynchronous call. Any further calls can be done inside the success callback or after the ApiIsInitialized notification.
Connects to the unblu server and makes the API ready for further calls.
Consecutive calls (without deinitializing inbetween) will be ignored, but the callbacks will also be triggered, as soon as there is a result.
Declaration
Swift
func initApi(success: (() -> Void)? = nil, preloadUiFinished: (() -> Void)? = nil, failure: ((UnbluApiInitializeError) -> Void)? = nil)Parameters
successOptional callback that will be called once the API has been successfully initialized.
preloadUiFinishedOptional callback that will be called once the ui is preloaded. (Preloading must be enabled)
failureOptional callback that will be called if the initialization of the API fails.
-
Deinitializes the unblu API.
This is an asynchronous call. Use the callbacks to check for success / failure.
Calling this method will free all resources allocated by the unblu API.
Consecutive calls (without initializing inbetween) will be ignored, but the callbacks will also be triggered, as soon as there is a result.
Declaration
Swift
func deinitApi(success: (() -> Void)? = nil, failure: ((UnbluApiDeinitializeError) -> Void)? = nil)Parameters
successOptional callback that will be called once the API has been successfully deinitialized.
failureOptional callback that will be called if the deinitialization of the API fails.
-
Returns
trueif the API was initialized and the initialization of the API was successful.falseif api is not initialized or in error state.This is an asynchronous call. Use the callbacks to check for success / failure.
Declaration
Swift
func isInitialized(success: @escaping (Bool) -> Void)Parameters
successCallback that will be called with
trueif the API is initialized.falseotherwise. -
Returns
trueif the API is in error state.This is an asynchronous call. Use the callbacks to check for success / failure.
Declaration
Swift
func isInErrorState(success: @escaping (Bool) -> Void)Parameters
successCallback that will be called with
trueif the API is in error state.falseotherwise. -
Starts preloading the ui. Can be called as soon as the api is initialized. It will load the page, which is needed later for the ui. If enablePreloadUiAfterApiInit of #configureApi is set to true.
Calling this function multiple times will have no effect.
This is an asynchronous call. Use the callbacks to check for success / failure.
Declaration
Swift
func preloadUi(success: (() -> Void)? = nil, failure: ((UnbluApiNotInitializedError) -> Void)? = nil)Parameters
successOptional callback that will be called once the preloading is finished.
failureOptional callback that will be called if the api was not initialized.
-
When called, the given
UnbluCookieobjects are passed to the Unblu WebView, and used in future network requests made by this WebView. This function can be called independent of the state of the api. If the api was already initialized, calling this function will overwrite any existing cookies in the WebView with the same key, all other previously set cookies will not be changed. All cookies will be removed when #deinitApi is called. When #initApi is called again, only the last Set of cookies passed to this function will be used.Declaration
Swift
func setCustomCookies(_ customCookies: Set<UnbluCookie>)Parameters
customCookiesA Set of
UnbluCookieobjects which will be sent with requests to the configured base url -
Sets or updates the named area. This can be called independent of the state of the api, but has different effects depending on the current state. If the api is not initialized when calling this function, the configuration of the named area is loaded as soon as the api gets initialized. If this function is called and the api is already initialized, it can only be used on the agent desk to filter incoming requests in the queue. No specific configuration is loaded for it. If a conversation is already active, this function has no effect until the api is either initialized again (what would load the configuration of the named area) or a new conversation is started (filtering named area in the queue).
Declaration
Swift
func setNamedArea(_ namedArea: String?)Parameters
namedAreaThe named area meta tag id which is configured on the agent desk.
-
Checks if the call UI for an audio/video call is open or not. If the call Ui is minized, the result is also false. If you need to check if a call is active or not. Use the #isCallActive function.
This is an asynchronous call. Use the callbacks to check for success / failure.
Declaration
Swift
func isCallUiOpen(success: ((Bool) -> Void)? = nil, failure: ((UnbluApiNotInitializedError) -> Void)? = nil)Parameters
successOptional callback that will be called with the result if the UI is open or not
failureOptional callback that will be called if the api was not initialized.
-
Checks if the ui is visible or not
Declaration
Swift
func isUiVisible(_ callback: @escaping (Bool) -> Void)Parameters
callbackTriggered with the result if the ui is visible or not
-
Displays are hides the unblu ui
Declaration
Swift
func showUi(visible: Bool, animate: Bool = true, success: (() -> Void)? = nil, failure: ((UnbluApiNotInitializedError) -> Void)? = nil)Parameters
visibleIf set to true, the ui will be display. If set to false, it will be hidden
animateIf set to true, displaying/hidding the ui will be animated
successCalled after the ui is displayed/hidden and (if enabled) the animation has finished
failureCalled if the api was not initialized first
-
Set the margins of the UI. This can be used, if there should be a an open/close fab button or some menu at the top
Declaration
Swift
func setUiMargins(top uiTopMargin: CGFloat, bottom uiBottomMargin: CGFloat, animate: Bool = false)Parameters
topThe amount of margin in pixel at the top
bottomThe amount of margin in pixel at the bottom
animateIf set to true, the change of the margin is animated. Default is false
-
Opens the conversation for the given id. The unblu UI must have been visible at least once. You can call this after a call to showUi (wait for the success callback).
Declaration
Swift
func openConversation(_ conversationId: String, success: (() -> Void)? = nil, failure: ((UnbluApiOpenConversationError) -> Void)? = nil)Parameters
conversationIdThe id of the conversation which should be opened.
successCalled after the conversation was opened
failureCalled if there was an error opening the conversation
-
Opens a conversation for the given conversation id and starts an audio call. The unblu UI must have been visible at least once. You can call this after a call to showUi (wait for the success callback).
Declaration
Swift
func startAudioCall(_ conversationId: String, success: (() -> Void)? = nil, failure: ((UnbluApiStartAudioCallError) -> Void)? = nil)Parameters
conversationIdThe id of the conversation in which the audio call should be started
successCalled after the conversation was opened and the call has been started
failureCalled if there was an error opening the conversation and starting the call
-
Opens a conversation for the given conversation id and starts a video call. The unblu UI must have been visible at least once. You can call this after a call to showUi (wait for the success callback).
Declaration
Swift
func startVideoCall(_ conversationId: String, success: (() -> Void)? = nil, failure: ((UnbluApiStartVideoCallError) -> Void)? = nil)Parameters
conversationIdThe id of the conversation in which the video call should be started.
successCalled after the conversation was opened and the call has been started
failureCalled if there was an error opening the conversation and starting the call
-
Opens the overview over all conversations. The unblu UI must have been visible at least once. You can call this after a call to showUi (wait for the success callback).
Declaration
Swift
func openConversationOverview(success: (() -> Void)? = nil, failure: ((UnbluApiOpenConversationOverviewError) -> Void)? = nil)Parameters
successCalled when the overview was opened
failureCalled if there was an error opening the overview
-
Returns the id of the currently opened conversation inside the UI. Null if no conversation is open
Declaration
Swift
func getOpenConversationId(success: @escaping (String?) -> Void, failure: ((UnbluApiRetrieveOpenConversationIdError) -> Void)? = nil)Parameters
successCalled with the currently open conversation id or nil
failureCalled if the api is not initialized or the UI was never shown
-
Returns the info of the current person
Declaration
Swift
func getPersonInfo(success: @escaping (PersonInfo) -> Void, failure: ((UnbluApiRetrievePersonInfoError) -> Void)? = nil)Parameters
successCalled with the current person information
failureCalled if the api is not initialized or the used collaboration server is not of version 5.x newer than 5.17 or newer than 6.3
-
Helper to quickly check if is initialized. Should only be called inside an main.async queue
Declaration
Swift
func isInitializedInternal() -> Bool -
Returns a module based on the given type
Declaration
Swift
func getModule<T>(_ type: T.Type) -> T? where T : IAbstractBaseModule
UnbluCoreApi Class Reference