UnbluClient
public protocol UnbluClient : AnyObject
A protocol describing functionality of the UnbluClient
.
-
The view into which Unblu content will be rendered.
Declaration
Swift
var view: UnbluView { get }
-
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
var enableDebugOutput: Bool { get set }
-
Defines the log level of the Unblu SDK. Messages with a lower level will not be logged.
The default value is
LogLevel.info
.Declaration
Swift
var logLevel: LogLevel { get set }
-
Stops the UI from scrolling when the keyboard is shown or hidden.
This setting should only be changed if it causes issues. If it is disabled, the user of the SDK has to ensure that the UI container/the webview inside is resized correctly when necessary.
Declaration
Swift
var preventScrollingByKeyboard: Bool { get set }
-
Custom loading view creator used whenever a loading view is displayed.
Declaration
Swift
var customLoadingViewCreator: UnbluCustomLoadingViewCreator? { get set }
-
Sets or updates the named area. This can be done independently of the state of the client, but it has a different effect depending on the current client state.
- If the client has not been started when you set the named area, the configuration of the named area is loaded as soon as the client is started.
- If you set the named area and the client has already been started, it can only be used on the Agent Desk to filter incoming requests in the queue. No specific configuration will be loaded for the named area.
- If a conversation is already open, setting the named area has no effect until one of two events occur:
- The
UnbluClient
is started again, which loads the configuration of the named area. - A new conversation is started, which results in the queue being filtered by the newly set named area
- The
Declaration
Swift
var namedArea: String? { get set }
-
Sets or updates custom cookies. When set, the
UnbluCookie
objects are passed to the Unblu WebView, which then uses them in future network requests. This can be done independently of the client’s current state. If the client has already been started, settingcustomCookies
overwrites any existing cookies with the same key in the WebView. The other cookies are not affected. Cookies set here will be used by the WebView whether it’s waiting to be started or already running.Declaration
Swift
var customCookies: Set<UnbluCookie> { get set }
-
The current displayed
UnbluConversation
, ornil
if there is no conversation currently displayed.Declaration
Swift
var openConversation: UnbluConversation? { get }
-
The current unread messages count
Declaration
Swift
var unreadMessagesCount: Int { get }
-
The user agent postfix used inside the WKWebView of the Unblu SDK. This is important for the Collaboration Server to identify the WKWebView and facilitate proper communication between the JavaScript and native code. The value is assigned to WKWebViewConfiguration.applicationNameForUserAgent. For more information, refer to https://developer.apple.com/documentation/webkit/wkwebviewconfiguration/1395665-applicationnameforuseragent.
Declaration
Swift
var userAgentPostFix: String { get }
-
Initializes the Unblu client.
Connects to the unblu server and makes the API ready for further calls.
This is an asynchronous call. Any further calls can be made in the success callback or after receiving the
ApiIsInitialized
notification.Subsequent calls without deinitialization beforehand will be ignored. The callbacks, however, will be triggered as soon as there is a
Result
.Declaration
Swift
func start(_ completion: @escaping (Result<Void, UnbluClientInitializeError>) -> Void)
Parameters
completion
The callback that will be called with a Result type once the client has been initialized successfully, or with an
UnbluApiInitializeError
if initialization failed. -
Initializes the Unblu client.
Connects to the unblu server and makes the API ready for further calls then tries to open a conversation with the passed id
This is an asynchronous call. Any further calls can be made in the success callback or after receiving the
ApiIsInitialized
notification.Subsequent calls without deinitialization beforehand will be ignored. The callbacks, however, will be triggered as soon as there is a
Result
.Declaration
Swift
func start(with conversationId: String, _ completion: @escaping (Result<Void, UnbluClientInitializeError>, Result<UnbluConversation, UnbluOpenConversationError>) -> Void)
Parameters
conversationId
The conversation id to open
completion
The callback that will be called with a Result type once the client has been initialized successfully, or with an
UnbluApiInitializeError
if initialization failed. The Second result containing theUnbluConversation
that was opened, or anUnbluApiOpenConversationError
if opening failed. -
Deinitializes the Unblu client.
Calling this method will free all resources allocated to the Unblu client.
This is an asynchronous call. Use the callback to check for success or failure.
Consecutive calls (without initializing inbetween) will be ignored, but the callback will also be triggered, as soon as there is a result.
Note
This function invokes a full deinitialization, which is responsible for cleaning up the application state and freeing up resources. It also disconnects from the Collaboration Server properly. As a result, the function may take up to five seconds to complete, depending on the user’s network connection.Declaration
Swift
func stop(_ completion: ((Result<Void, UnbluDeinitializeError>) -> Void)?)
Parameters
completion
completion: The (optional) callback that will be called with a Result type once the Unblu client has been deinitialized successfully, or with an
UnbluApiDeinitializeError
if deinitialization failed. -
Returns
true
if the Unblu client was initialized and the initialization was successful, andfalse
if the Unblu client is not initialized or is in an error state.This is an asynchronous call. Use the callbacks to check for success or failure.
Declaration
Swift
func isInitialized(success: @escaping (Bool) -> Void)
Parameters
success
The callback called with
true
if the Unblu client is initialized and withfalse
otherwise. -
Returns
true
if the client is in error state, andfalse
otherwise.This is an asynchronous call. Use the callbacks to check for success or failure.
Declaration
Swift
func isInErrorState(success: @escaping (Bool) -> Void)
Parameters
success
The callback called with
true
if the Unblu client is in an error state and withfalse
otherwise. -
Opens and displays a conversation with the given ID in the
UnbluView
.Declaration
Swift
func openConversation(_ conversationId: String, onComplete: @escaping (Result<UnbluConversation, UnbluOpenConversationError>) -> Void)
Parameters
conversationId
The ID of the conversation to open.
onComplete
A Result containing the
UnbluConversation
that was opened, or anUnbluApiOpenConversationError
if opening failed. -
Opens the conversation overview.
Declaration
Swift
func openConversationOverview(onComplete: @escaping (Result<Void, UnbluOpenConversationOverviewError>) -> Void)
Parameters
onComplete
A
Result
representing success if the conversation overview was opened, or anUnbluApiOpenConversationOverviewError
if opening the overview failed. -
Returns the information on the person currently interacting with the Unblu client.
Declaration
Swift
func getPersonInfo(onComplete: @escaping (Result<PersonInfo, UnbluRetrievePersonInfoError>) -> Void)
Parameters
onComplete
A
Result
containing the current PersonInfo of the person currently identified, or anUnbluApiRetrievePersonInfoError
if retrieving the person’s information failed. -
Set the OAuth 2.0 token to pass to service worker and used in the authorization header. Bearer Token Usage: https://datatracker.ietf.org/doc/html/rfc6750
Declaration
Swift
func setOAuthToken(token: String)
Parameters
token
The token received from an identity provider
-
Adds a label to the current person.
This method is only compatible with version 8.0.0 or newer of the Collaboration Server.
Declaration
Swift
func addPersonLabel(name: String, onComplete: @escaping (_ result: Bool) -> Void)
Parameters
name
The name of the label to add
result
Reporting success with
true
orfalse
to indicate whether the operation was successful or not. -
Retrieves visitor data for the active conversation.
Declaration
Swift
func getVisitorData(onComplete: @escaping (_ result: String?) -> Void)
Parameters
onComplete
A closure that is called with the visitor data result. Passes a non-nil result if successful and the value is defined, otherwise nil.
-
Removes a label from the current person.
This method is only compatible with version 8.0.0 or newer of the Collaboration Server.
Declaration
Swift
func removePersonLabel(name: String, onComplete: @escaping (_ result: Bool) -> Void)
Parameters
name
The name of the label to remove.
result
Reporting success with
true
orfalse
to indicate whether the operation was successful or not. -
Returns all accessible conversations of the current user. If no conversation is present, an empty array is returned.
Declaration
Swift
func getConversations(completion: @escaping ([ConversationInfo]) -> Void)
-
Checks if the Unblu view is presented as a modal view and is visible or not.
Note
If it is visible when receiving didRequestHideUi, ‘dismissModalView’ should be used to hide the modal view.Declaration
Swift
func isModalViewVisible() -> Bool
-
Set to enable if the floating button should appear when a conversation is open and the UnbluView is gets hidden It is disabled per default.
Declaration
Swift
func setEnabledFloatingActiveConversationIndicator(_ enabled: Bool)
Parameters
enabled
true to display the floating button, otherwise false
-
presentingAsModalView(reason:
Default implementationwith: shadowStyle: _: ) Shows an existing Unblu view in a new modal window. This temporarily moves the view from the current hierarchy to a new global window. After closing the new window, the Unblu view will be moved back to its previous location. This function can also be used if the Unblu view is not added anywhere. This function should not be used if the unblu view is visible. In this case first remove the Unblu view from its current parent. NOTE: Ensure that if the Unblu view is displayed modally with this function to also call
dismissModalView
before attching the unblu view directly somewhere else.Default Implementation
Shows an existing Unblu view in a new modal window. This temporarily moves the view from the current hierarchy to a new global window. After closing the new window, the Unblu view will be moved back to its previous location. This function can also be used if the Unblu view is not added anywhere. This function should not be used if the unblu view is visible. In this case first remove the Unblu view from its current parent. NOTE: Ensure that if the Unblu view is displayed modally with this function to also call
dismissModalView
before attching the unblu view directly somewhere else.Declaration
Swift
func presentingAsModalView(reason: UnbluUiRequestReason, with animation: UnbluPresentationAnimationStyle, shadowStyle: UnbluPresentationShadowStyle, _ anchor: CGRect?)
Parameters
reason
The reason why the view is displayed modally. Typically this is either ‘UnbluUiRequestReason.floatingActiveConversationButtonPressed’ or ‘UnbluUiRequestReason.pipButtonRequest’
animation
Animation effect that will be used to open and close the window
shadowStyle
The style of shadow that the window has
anchor
This is optional. The frame to/from of which the window expands/collapses.
-
Hide the current modal window with the animation effect used to open NOTE: this should only be called after calling presentingAsModalView and before trying to attach the Unblu view somewhere else directly if needed because it puts Unblu in its old place in the window hierarchy
Declaration
Swift
func dismissModalView()
-
Check if floating active conversation indicator can be displayed and show it if it’s not visible.
Declaration
Swift
func showFloatingActiveConversationIndicator()
-
Set Unblu view mode to modal view mode, this means removing the navigation pointer (back to overview, etc.)
Declaration
Swift
func setModalMode(enabled: Bool, _ completion: @escaping (Bool) -> Void)
Parameters
enabled
true to remove the navigation pointer, otherwise false
-
The name for the icon image that will be displayed on an active conversation indicator button. The icon with this name must be included in the app’s resources, and it is recommended that the minimum size of the icon is 80x80 pixels and It is preferable to have a round icon. If this name is not set, the avatar of the current agent will be displayed instead.
Declaration
Swift
var activeConversationIndicatorIconName: String? { get set }
-
Indicates whether indicators have a removal area or not.
Declaration
Swift
var indicatorsHaveRemovalArea: Bool { get set }
-
stop()
Extension methodDeclaration
Swift
func stop()