Members

    VICompletionBlock

    Completion callback.

    typedef void (^VICompletionBlock) (NSError *error)

    Members

      VILoginFailure

      Completion handler, triggered when login process failed.

      typedef void (^VILoginFailure) (NSError *error)

      Members

        VILoginSuccess

        Completion handler, triggered when login operation is completed successfully.

        typedef void (^VILoginSuccess) (NSString *displayName, NSDictionary *authParams)

        Members

          VIOneTimeKeyResult

          Completion handler, triggered when one time key generated by the login server.

          typedef void (^VIOneTimeKeyResult) (NSString *oneTimeKey)

          Members

            VIRefreshTokenResult

            Completion handler, triggered when refresh of login tokens completed.

            typedef void (^VIRefreshTokenResult) (NSError *error, NSDictionary *authParams)

            VIAudioManager

            Interface that may be used to manage audio devices on iOS device.

            Members
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            +  sharedAudioManager

            Obtain VIAudioManager instance

            + (instancetype)sharedAudioManager
            useLoudSpeaker

            Enable or disable loudspeaker

            @property (nonatomic, assign) BOOL useLoudSpeaker

            VICall

            Interface that may be used for call operations like answer, reject, hang up and mid-call operations like hold, start/stop video and others.

            Members
            Other Methods
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            preferredVideoCodec

            Preferred video codec, for example: @“H264”. Nil by default. Must be set before using startWithHeaders:, if needed.

            @property (nonatomic, strong) NSString *preferredVideoCodec
            videoSource

            Video source. By default [VICameraManager sharedCameraManager] is used that gets video from back or front camera. Must be set before using startWithHeaders:, if needed.

            @property (nonatomic, strong) VIVideoSource *videoSource
            –  addDelegate:

            Add call delegate to handle call events.

            - (void)addDelegate:(id<VICallDelegate>)delegate
            Parameters
            delegate

            Instance of VICallDelegate delegate

            –  removeDelegate:

            Remove previously added call delegate.

            - (void)removeDelegate:(id<VICallDelegate>)delegate
            Parameters
            delegate

            Instance of VICallDelegate delegate

            callId

            The call id.

            @property (nonatomic, strong, readonly) NSString *callId
            endpoints

            Array of the endpoints associated with the call.

            @property (nonatomic, strong, readonly) NSArray<VIEndpoint*> *endpoints
            stat

            Call statistics. Updated every 5 seconds.

            @property (nonatomic, strong, readonly) VICallStat *stat
            sendAudio

            Enables or disables audio transfer from microphone into the call.

            @property (nonatomic, assign) BOOL sendAudio
            –  duration

            Get the call duration

            - (NSTimeInterval)duration
            Return

            Call duration

            –  startWithHeaders:

            Start outgoing call

            - (void)startWithHeaders:(NSDictionary *)headers
            Parameters
            headers

            Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

            –  stopWithHeaders:

            Terminate established or outgoing processing call.

            - (void)stopWithHeaders:(NSDictionary *)headers
            Parameters
            headers

            Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

            –  setSendVideo:completion:

            Start or stop sending video for the call.

            - (void)setSendVideo:(BOOL)video completion:(VICompletionBlock)completion
            Parameters
            video

            True if video should be sent, false otherwise

            completion

            Completion block to handle the result of the operation

            –  setHold:completion:

            Hold or unhold the call

            - (void)setHold:(BOOL)hold completion:(VICompletionBlock)completion
            Parameters
            hold

            True if the call should be put on hold, false for unhold

            completion

            Completion block to handle the result of the operation

            –  startReceiveVideoWithCompletion:

            Start receive video if video receive was not enabled before. Stop receiving video during the call is not supported.

            - (void)startReceiveVideoWithCompletion:(VICompletionBlock)completion
            Parameters
            completion

            Completion block to handle the result of operation

            –  sendMessage:headers:

            Send message within the call. Implemented atop SIP INFO for communication between call endpoint and Voximplant cloud, and is separated from Voximplant messaging API.

            - (void)sendMessage:(NSString *)message headers:(NSDictionary *)headers
            Parameters
            message

            Message text

            headers

            Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

            –  sendInfo:mimeType:headers:

            Send INFO message within the call

            - (void)sendInfo:(NSString *)body mimeType:(NSString *)mimeType headers:(NSDictionary *)headers
            Parameters
            body

            Custom string data

            mimeType

            MIME type of info

            headers

            Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

            –  sendDTMF:

            Send DTMF within the call

            - (BOOL)sendDTMF:(NSString *)dtmf
            Parameters
            dtmf

            DTMFs

            Return

            True if DTMFs are sent successfully, false otherwise

            –  answerWithSendVideo:receiveVideo:customData:headers:

            Answer incoming call.

            - (void)answerWithSendVideo:(BOOL)sendVideo receiveVideo:(BOOL)receiveVideo customData:(NSString *)customData headers:(NSDictionary *)headers
            Parameters
            sendVideo

            Specify if video send is enabled for a call

            receiveVideo

            Specify if video receive is enabled for a call

            customData

            Optional custom data passed with call. Will be available in VoxEngine scenario

            headers

            Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

            –  rejectWithHeaders:

            Reject incoming call.

            - (void)rejectWithHeaders:(NSDictionary *)headers
            Parameters
            headers

            Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

            –  hangupWithHeaders:

            Terminates call. Call should be either established, or outgoing progressing

            - (void)hangupWithHeaders:(NSDictionary *)headers
            Parameters
            headers

            Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

            Streams Methods
            localVideoStreams

            Local video streams associated with the call

            @property (nonatomic, strong, readonly) NSArray<VIVideoStream*> *localVideoStreams

            VICallStat

            Call staticstics

            Members
            video

            References video statistics information

            @property (nonatomic, strong, readonly) VIVideoStat *video
            endpoints

            References remote endpoints statistics information

            @property (nonatomic, strong, readonly) NSArray<VIEndpointStat*> *endpoints
            localStreams

            References local send streams statistics information

            @property (nonatomic, strong, readonly) NSArray<VIStreamStat*> *localStreams
            streams

            References statistics information for all streams in one place: ‘audio-send’, ‘audio-recv’, ‘video-send’, ‘video-recv’

            @property (nonatomic, strong, readonly) NSArray<VIStreamStat*> *streams
            webrtcOriginalReports

            References original WebRTC statistics information ‘audio-recv’, ‘video-send’, ‘video-recv’

            @property (nonatomic, strong, readonly) NSArray<RTCLegacyStatsReport*> *webrtcOriginalReports

            VICameraManager

            VICameraManager

            Members
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            +  sharedCameraManager

            Obtain VICameraManager instance

            + (instancetype)sharedCameraManager
            Return

            VICameraManager instance

            –  captureDevices

            Get list of available capture devices that support video capture

            - (NSArray<AVCaptureDevice*> *)captureDevices
            Return

            List of available capture devices

            –  supportedFormatsForDevice:

            Get list of formats(resolutions) that are supported by requested device

            - (NSArray<AVCaptureDeviceFormat*> *)supportedFormatsForDevice:(AVCaptureDevice *)device
            Parameters
            device

            Capture device to get its formats

            Return

            List of formats

            –  changeCaptureFormat:

            Change video format(resolution) to be sent to remote participant. Default video format 640x480.

            - (void)changeCaptureFormat:(AVCaptureDeviceFormat *)format
            Parameters
            format

            New video format

            videoPreprocessDelegate

            Video prepocessing delegate

            @property (nonatomic, weak) id<VIVideoPreprocessDelegate> videoPreprocessDelegate
            useBackCamera

            A boolean value indicating if back camera should be used

            @property (nonatomic, assign) BOOL useBackCamera

            VIClient

            Interface that may be used to connect and login to VoxImplant Cloud, make and receive audio/video calls.

            Members
            Other Methods
            +  clientVersion

            Get client version

            + (NSString *)clientVersion
            Return

            Client version

            +  setLogLevel:

            Set a verbosity level for log messages. This method must be called before creating SDK object instance.

            + (void)setLogLevel:(VILogLevel)logLevel
            Parameters
            logLevel

            VILogLevel log verbosity level

            +  saveLogToFileEnable

            Enable saving of the logs to file. Log files located at: Library/Caches/Logs This method must be called before creating SDK object instance.

            + (void)saveLogToFileEnable
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            –  initWithDelegateQueue:

            Initialize VIClient instance

            - (instancetype)initWithDelegateQueue:(dispatch_queue_t)queue
            Parameters
            queue

            All delegates methods will be called in this queue. Queue should be serial, but not concurrent (main queue is applicable).

            messenger

            Get instance of messaging subsystem.

            @property (nonatomic, strong, readonly) VIMessenger *messenger
            Login Methods
            –  loginWithUser:password:success:failure:

            Login to VoxImplant cloud using password.

            - (void)loginWithUser:(NSString *)user password:(NSString *)password success:(VILoginSuccess)success failure:(VILoginFailure)failure
            Parameters
            user

            Full user name, including app and account name, like someuser@someapp.youraccount.voximplant.com

            password

            User password

            success

            VILoginSuccess completion handler triggered if operation is completed successfully

            failure

            VILoginFailure completion handler failure triggered if operation is failed

            –  loginWithUser:token:success:failure:

            Login to VoxImplant cloud using access token.

            - (void)loginWithUser:(NSString *)user token:(NSString *)token success:(VILoginSuccess)success failure:(VILoginFailure)failure
            Parameters
            user

            Full user name, including app and account name, like someuser@someapp.youraccount.voximplant.com

            token

            Access token obtained from authParams

            success

            VILoginSuccess completion handler triggered if operation is completed successfully

            failure

            VILoginFailure completion handler failure triggered if operation is failed

            –  loginWithUser:oneTimeKey:success:failure:

            Login to VoxImplant cloud using one time key.

            - (void)loginWithUser:(NSString *)user oneTimeKey:(NSString *)oneTimeKey success:(VILoginSuccess)success failure:(VILoginFailure)failure
            Parameters
            user

            Full user name, including app and account name, like someuser@someapp.youraccount.voximplant.com

            oneTimeKey

            Hash that was generated using following formula:

             MD5(oneTimeKey+"|"+MD5(user+":voximplant.com:"+password))
            

            Please note that here user is just a user name, without app name, account name or anything else after “@”. So if you pass myuser@myapp.myacc.voximplant.com as a username, you should only use myuser while computing this hash

            success

            VILoginSuccess completion handler triggered if operation is completed successfully

            failure

            VILoginFailure completion handler failure triggered if operation is failed

            –  refreshTokenWithUser:token:result:

            Perform refresh of login tokens required for login using access token

            - (void)refreshTokenWithUser:(NSString *)user token:(NSString *)token result:(VIRefreshTokenResult)result
            Parameters
            user

            Full user name, including app and account name, like someuser@someapp.youraccount.voximplant.com

            token

            Refresh token obtained from authParams

            result

            VIRefreshTokenResult completion handler that is triggered when the operation is completed

            –  requestOneTimeKeyWithUser:result:

            Generates one time login key to be used for automated login process.

            - (void)requestOneTimeKeyWithUser:(NSString *)user result:(VIOneTimeKeyResult)result
            Parameters
            user

            Full user name, including app and account name, like someuser@someapp.youraccount.voximplant.com

            result

            VIOneTimeKeyResult completion handler that is triggered when the operation is completed

            Push Methods
            –  registerPushNotificationsToken:imToken:

            Register Apple Push Notifications token. After calling this function application will receive push notifications from Voximplant Server.

            - (void)registerPushNotificationsToken:(NSData *)voipToken imToken:(NSData *)imToken
            Parameters
            voipToken

            The APNS token for VoIP push notifications which comes from:

             - (void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(PKPushType)type;
            
            imToken

            The APNS token for IM push notifications

            –  unregisterPushNotificationsToken:imToken:

            Unregister Apple Push Notifications token. After calling this function application stops receive push notifications from Voximplant Server

            - (void)unregisterPushNotificationsToken:(NSData *)voipToken imToken:(NSData *)imToken
            Parameters
            voipToken

            The APNS token for VoIP push notifications which comes from:

             - (void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(PKPushType)type;
            
            imToken

            The APNS token for IM push notification

            –  handlePushNotification:

            Handle incoming push notification

            - (void)handlePushNotification:(NSDictionary *)notification
            Parameters
            notification

            The incomming notification which comes from:

             - (void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(PKPushType)type
            
            CallManager Methods
            callManagerDelegate

            CallManager delegate that handles incoming calls.

            @property (nonatomic, weak) id<VIClientCallManagerDelegate> callManagerDelegate
            calls

            Dictionary of actual calls with their ids.

            @property (nonatomic, strong, readonly) NSDictionary<NSString*VICall*> *calls
            –  callToUser:withSendVideo:receiveVideo:customData:

            Create new call instance. Call must be then started using startCall

            - (VICall *)callToUser:(NSString *)user withSendVideo:(BOOL)sendVideo receiveVideo:(BOOL)receiveVideo customData:(NSString *)customData
            Parameters
            user

            SIP URI, username or phone number to make call to. Actual routing is then performed by VoxEngine scenario

            sendVideo

            Specify if video send is enabled for a call

            receiveVideo

            Specify if video receive is enabled for a call

            customData

            Custom data passed with call. Will be available in VoxEngine scenario

            Return

            Pointer to VICall instance

            Session Methods
            sessionDelegate

            Session delegate that handles events for connection with VoxImplant Cloud.

            @property (nonatomic, weak) id<VIClientSessionDelegate> sessionDelegate
            –  connect

            Connect to VoxImplant cloud

            - (void)connect
            –  connectWithConnectivityCheck:gateways:

            Connect to VoxImplant cloud.

            - (void)connectWithConnectivityCheck:(BOOL)connectivityCheck gateways:(NSArray *)gateways
            Parameters
            connectivityCheck

            Checks whether UDP traffic will flow correctly between device and VoxImplant cloud. This check reduces connection speed.

            gateways

            Array of server names of particular media gateways for connection

            –  disconnect

            Disconnect from VoxImplant cloud

            - (void)disconnect

            VIConversation

            Interface that may be used to manage conversation.

            Members
            createdAt

            UNIX timestamp that specifies the time of the conversation creation

            @property (nonatomic, strong, readonly) NSNumber *createdAt
            lastUpdate

            UNIX timestamp that specifies the time of the last event in the conversation

            @property (nonatomic, strong, readonly) NSNumber *lastUpdate
            customData

            Dictionary with custom data, up to 5kb.

            @property (nonatomic, strong) NSDictionary *customData
            distinct

            Check if the conversation is distinct. If two conversations are created with same set of users and moderators and both have ‘distinct’ flag, second create call will fail with the UUID of conversation already created. Note that changing users or moderators list will clear ‘distinct’ flag. Note that setting this property does not send changes to the server. Use the update to send all changes at once.

            @property (nonatomic, assign) BOOL distinct
            publicJoin

            Check if public join is enabled

            @property (nonatomic, assign) BOOL publicJoin
            lastRead

            Sequence of last event that was read by user

            @property (nonatomic, strong, readonly) NSNumber *lastRead
            lastSeq

            Last event sequence for this conversation.

            @property (nonatomic, strong, readonly) NSNumber *lastSeq
            uuid

            Universally unique identifier of current conversation.

            @property (nonatomic, strong, readonly) NSString *uuid
            title

            Current conversation title

            @property (nonatomic, strong) NSString *title
            participants

            Array of VIConversationParticipant conversation participants alongside with their rights

            @property (nonatomic, strong, readonly) NSArray<VIConversationParticipant*> *participants
            moderators

            Array of conversation moderator names

            @property (nonatomic, strong, readonly) NSArray<NSString*> *moderators
            –  addParticipants:

            Add new participants to the conversation. Duplicated users are ignored. Will fail if any user does not exist. Triggers the [VIMessengerDelegate messenger:didEditConversation:] event for all messenger objects on all clients, including this one. Clients that are not connected will receive it later.

            - (void)addParticipants:(NSArray<VIConversationParticipant*> *)participants
            Parameters
            participants

            Array of VIConversationParticipant to be added to the conversation

            –  addModerators:

            Add new moderators to the conversation. Duplicated users are ignored. Will fail if any user does not exist. Triggers the [VIMessengerDelegate messenger:didEditConversation:] event for all messenger objects on all clients, including this one. Clients that are not connected will receive it later.

            - (void)addModerators:(NSArray<NSString*> *)moderators
            Parameters
            moderators

            Array of moderators to be added to the conversation

            –  editParticipants:

            Edit participants' access rights. Duplicated users are ignored. Participant list must contain all participants. Triggers the [VIMessengerDelegate messenger:didEditConversation:] event for all messenger objects on all clients, including this one. Clients that are not connected will receive it later.

            - (void)editParticipants:(NSArray<VIConversationParticipant*> *)participants
            Parameters
            participants
            –  removeParticipants:

            Remove participants from the conversation. Duplicated users are ignored. Will fail if any user does not exist. Triggers the [VIMessengerDelegate messenger:didEditConversation:] event for all messenger objects on all clients, including this one. Clients that are not connected will receive it later.

            - (void)removeParticipants:(NSArray<VIConversationParticipant*> *)participants
            Parameters
            participants

            Array of VIConversationParticipant to be removed from conversation

            –  removeModerators:

            Remove moderators from the conversation. Duplicated users are ignored. Will fail if any user does not exist. Triggers the [VIMessengerDelegate messenger:didEditConversation:] event for all messenger objects on all clients, including this one. Clients that are not connected will receive it later.

            - (void)removeModerators:(NSArray<NSString*> *)moderators
            Parameters
            moderators

            Array of moderators to be removed from the conversation

            –  markAsRead:

            Mark the event with the specified sequence as ‘read’. This affects ‘lastRead’ and is used to display unread messages and events.

            - (void)markAsRead:(NSNumber *)seq
            Parameters
            seq

            Sequence number of the event to be marked as read

            –  markAsDelivered:

            Mark event with the specified sequence as handled by current logged-in device. If single user is logged in on multiple devices, this can be used to display delivery status.

            - (void)markAsDelivered:(NSNumber *)seq
            Parameters
            seq

            Sequence number of the event to be marked as delivered

            –  sendMessage:payload:

            Send message to the conversation. Triggers the [VIMessengerDelegate messenger:didSendMessage:] event for all messenger objects on all clients, including this one.

            - (VIMessage *)sendMessage:(NSString *)message payload:(NSArray<VIPayload*> *)payload
            Parameters
            message

            Message text

            payload

            Message payload

            Return

            VIMessage instance

            –  typing

            Calling this method will inform backend that user is typing some text. Calls within 10s interval from the last call are discarded.

            - (void)typing
            –  retransmitEventsFrom:to:

            Request events in the specified sequence range to be sent from server into this client. Used to get history or get missed events in case of network disconnect. Please note that server will not push any events that was missed due to the client being offline. Client should use this method to request all events based on the last event sequence received from the server and last event sequence saved locally (if any).

            - (void)retransmitEventsFrom:(NSNumber *)from to:(NSNumber *)to
            Parameters
            from

            First event in range sequence, inclusive

            to

            Last event in range sequence, inclusive

            –  update

            Send conversation changes to the server. The changes sent are: title, public join flag, distinct flag and custom data.

            - (void)update
            –  remove

            Remove current conversation. All participants, including this one, will receive the [VIMessengerDelegate messenger:didRemoveConversation:] event.

            - (void)remove

            VIConversationEvent

            Interface that represents messenger events related to conversation such as create, edit, remove and others.

            Members
            conversation

            VIConversation instance with conversation information

            @property (nonatomic, strong) VIConversation *conversation

            VIConversationParticipant

            Interface that represents participant of a conversation.

            Members
            canManageParticipants

            If ‘true’, user can add, remove and edit access rights for conversation participants (but not conversation moderators)

            @property (nonatomic, assign) BOOL canManageParticipants
            canWrite

            If ‘true’, user can write to the conversation

            @property (nonatomic, assign) BOOL canWrite
            userId

            Voximplant user identifier, ex username@appname.accname

            @property (nonatomic, copy, readonly) NSString *userId
            –  initWithUserId:canWrite:canManageParticipants:

            Initialize conversation participant

            - (instancetype)initWithUserId:(NSString *)userId canWrite:(BOOL)canWrite canManageParticipants:(BOOL)canManageParticipants
            Parameters
            userId

            Voximplant user identifier, ex username@appname.accname

            canWrite

            If ‘true’, user can write to the conversation

            canManageParticipants

            If ‘true’, user can add, remove and edit access rights for conversation participants (but not conversation moderators)

            Return

            VIConversationParticipant instance

            VIConversationServiceEvent

            Interface that represents messenger events such as typing, isRead, isDelivered.

            Members
            conversationUUID

            Conversation UUID associated with this event.

            @property (nonatomic, strong, readonly) NSString *conversationUUID
            seq

            Sequence number of event

            @property (nonatomic, strong, readonly) NSNumber *seq
            timestamp

            UNIX timestamp that specifies the time a method was called

            @property (nonatomic, strong, readonly) NSNumber *timestamp

            VICustomVideoSource

            Interface that represents custom video source

            Members
            delegate

            VICustomVideoSourceDelegate delegate to handle custom video source events

            @property (nonatomic, weak) id<VICustomVideoSourceDelegate> delegate
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            –  initWithVideoFormats:

            Initialize custom video source

            - (instancetype)initWithVideoFormats:(NSArray<VIVideoFormat*> *)formats
            Parameters
            formats

            Video format for the custom video source

            Return

            VICustomVideoSource instance

            –  sendVideoFrame:rotation:

            Send video frame

            - (void)sendVideoFrame:(CVPixelBufferRef)buffer rotation:(VIRotation)rotation
            Parameters
            buffer

            Pixel buffer. Should be kCVPixelFormatType_420YpCbCr8BiPlanarFullRange or kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange

            rotation

            Video rotation

            VIEndpoint

            VIEndpoint

            Members
            delegate

            VIEndpointDelegate delegate to handle the endpoint events.

            @property (nonatomic, weak) id<VIEndpointDelegate> delegate
            call

            Call associated with the endpoint.

            @property (nonatomic, weak, readonly) VICall *call
            stat

            Statistics for the endpoint.

            @property (nonatomic, strong, readonly) VIEndpointStat *stat
            remoteVideoStreams

            Video streams associated with the endpoint.

            @property (nonatomic, strong, readonly) NSArray<VIVideoStream*> *remoteVideoStreams
            endpointId

            The endpoint id.

            @property (nonatomic, strong, readonly) NSString *endpointId
            user

            User name of the endpoint

            @property (nonatomic, strong, readonly) NSString *user
            sipURI

            SIP URI of the endpoint.

            @property (nonatomic, strong, readonly) NSString *sipURI
            userDisplayName

            User display name of the endpoint.

            @property (nonatomic, strong, readonly) NSString *userDisplayName

            VIEndpointStat

            Endpoint statistics

            Members
            remoteStreams

            Collection of statistics for remote receive streams.

            @property (nonatomic, strong, readonly) NSArray<VIStreamStat*> *remoteStreams

            VIErrorEvent

            Interface that represents error messenger events.

            Members
            descr

            Error description

            @property (nonatomic, strong, readonly) NSString *descr
            code

            Error code

            • 1: Wrong transport message structure
            • 2: Unknown event name
            • 3: User not auth
            • 4: Wrong message structure
            • 5: Conversation not found or user not in participant list
            • 6: Conversation not found or user can’t moderate conversation
            • 7: Conversation already exists
            • 8: Conversation does not exists
            • 9: Message already exists
            • 10: Message does not exist
            • 11: Message was deleted
            • 12: ACL error
            • 13: User already in participant list
            • 14: No rights to edit user
            • 15: Public join is not available in this conversation
            • 16: Conversation was deleted
            • 17: Conversation is distinct
            • 18: User validation error
            • 19: Lists mismatch
            • 20: RESERVED
            • 21: Range larger than allowed by service
            • 22: Number of requested objects is larger than allowed by service
            • 23: Message size so large
            • 24: Seq is too big
            • 30: IM service not available
            • 500: Internal error
            • 777: Oops! Something went wrong
            @property (nonatomic, assign, readonly) NSUInteger code

            VIMessage

            Interface that represents message within a conversation.

            Members
            conversation

            UUID of the conversation this message belongs to

            @property (nonatomic, strong, readonly) NSString *conversation
            sender

            User id of the sender of this message.

            @property (nonatomic, strong, readonly) NSString *sender
            uuid

            Universally unique identifier of message

            @property (nonatomic, strong, readonly) NSString *uuid
            seq

            Message sequence number

            @property (nonatomic, strong, readonly) NSNumber *seq
            text

            Text of this message

            @property (nonatomic, strong) NSString *text
            payload

            Array of VIPayload objects associated with the message

            @property (nonatomic, strong) NSArray<VIPayload*> *payload
            –  update

            Sends text and payload changes to the server.

            - (void)update
            –  remove

            Remove the message. Triggers the [VIMessengerDelegate messenger:didRemoveMessage:] event for all messenger objects on all clients, including this one. Clients that are not connected will receive it later.

            - (void)remove

            VIMessageEvent

            Interface that represents messenger events related to messages.

            Members
            message

            VIMessage instance with message information

            @property (nonatomic, strong, readonly) VIMessage *message

            VIMessenger

            Interface that may be used to control messaging functions.

            Members
            –  addDelegate:

            Add VIMessengerDelegate to handle messenger events.

            - (void)addDelegate:(id<VIMessengerDelegate>)delegate
            Parameters
            delegate

            VIMessengerDelegate instance to be added

            –  removeDelegate:

            Remove previously added VIMessengerDelegate delegate

            - (void)removeDelegate:(id<VIMessengerDelegate>)delegate
            Parameters
            delegate

            VIMessengerDelegate delegate to be removed

            –  createConversation:moderators:title:distinct:enablePublicJoin:customData:

            Create new conversation. Triggers the [VIMessengerDelegate messenger:didCreateConversation:] event for all messenger objects on all connected clients that are mentioned in the ‘participants’ array.

            - (void)createConversation:(NSArray<VIConversationParticipant*> *)participants moderators:(NSArray<NSString*> *)moderators title:(NSString *)title distinct:(BOOL)distinct enablePublicJoin:(BOOL)enablePublicJoin customData:(NSDictionary *)customData
            Parameters
            participants
            moderators

            Array of conversation moderators' names

            title

            Conversation title

            distinct

            Specify if conversation is distinct.

            enablePublicJoin

            If set to ‘true’, anyone can join conversation by uuid

            customData

            Dictionary with custom data, up to 5kb

            –  leaveConversation:

            Leave current user from the conversation specified by the UUID.

            - (void)leaveConversation:(NSString *)uuid
            Parameters
            uuid

            Conversation UUID

            –  joinConversation:

            Join current user to the conversation specified by the UUID.

            - (void)joinConversation:(NSString *)uuid
            Parameters
            uuid

            Conversation UUID

            –  removeConversation:

            Remove the conversation specified by the UUID.

            - (void)removeConversation:(NSString *)uuid
            Parameters
            uuid

            UUID of the conversation to be removed

            –  getMe

            Get the Voximplant user identifier, ex username@appname.accname, for the current user

            - (NSString *)getMe
            Return

            Current user identifier

            –  getUser:

            Get user information for the user specified by the Voximplant user identifier, ex username@appname.accname.

            - (void)getUser:(NSString *)user
            Parameters
            user

            User identifier

            –  getUsers:

            Get user information for the users specified by the array of the Voximplant user identifiers, ex username@appname.accname.

            - (void)getUsers:(NSArray<NSString*> *)users
            Parameters
            users

            Array of user identifiers

            –  editUserWithCustomData:privateCustomData:

            Edit current user information.

            - (void)editUserWithCustomData:(NSDictionary *)customData privateCustomData:(NSDictionary *)privateCustomData
            Parameters
            customData

            New custom data. If nil, previously set custom data will not be changed. If empty map, previously set custom data will be removed.

            privateCustomData

            New private custom data. If nil, previously set private custom data will not be changed. If empty map, previously set private custom data will be removed.

            –  subscribe:

            Subscribe for user information change and presence status change. On change, the [VIMessengerDelegate messenger:didSetStatus:] event will be triggered.

            - (void)subscribe:(NSArray<NSString*> *)users
            Parameters
            users

            Array of Voximplant user identifiers, ex username@appname.accname

            –  unsubscribe:

            Unsubscribe for user information change and presence status change.

            - (void)unsubscribe:(NSArray<NSString*> *)users
            Parameters
            users

            Array of Voximplant user identifiers, ex username@appname.accname

            –  getConversation:

            Get conversation by its UUID.

            - (void)getConversation:(NSString *)uuid
            Parameters
            uuid

            Conversation UUID

            –  getConversations:

            Get multiple conversations by array of UUIDs. Maximum 30 conversations. Note that calling this method will result in multiple [VIMessengerDelegate messenger:didGetConversation:] events.

            - (void)getConversations:(NSArray<NSString*> *)uuids
            Parameters
            uuids

            Array of conversation UUIDs

            –  setStatus:

            Set user presence status. Triggers the [VIMessengerDelegate messenger:didSetStatus:] event for all messenger objects on all connected clients which are subscribed for notifications about this user. Including this one if conditions are met.

            - (void)setStatus:(BOOL)online
            Parameters
            online

            True if user is available for messaging, false otherwise

            –  managePushNotifications:

            Manage messenger push notification subscriptions.

            - (void)managePushNotifications:(NSArray<NSNumber*> *)notifications
            Parameters
            notifications

            Array of VIMessengerNotification to be subscribed on.

            –  recreateConversation:title:distinct:enablePublicJoin:customData:uuid:sequence:moderators:lastUpdate:lastRead:createdAt:

            Recreate conversation. Note that this method does not create conversation, but restore previously created conversation.

            - (VIConversation *)recreateConversation:(NSArray<VIConversationParticipant*> *)participants title:(NSString *)title distinct:(BOOL)distinct enablePublicJoin:(BOOL)enablePublicJoin customData:(NSDictionary *)customData uuid:(NSString *)uuid sequence:(NSNumber *)sequnce moderators:(NSArray<NSString*> *)moderators lastUpdate:(NSNumber *)lastUpdate lastRead:(NSNumber *)lastRead createdAt:(NSNumber *)createdAt
            Parameters
            participants
            title

            Conversation title

            distinct

            Specify if conversation is distinct.

            enablePublicJoin

            If set to ‘true’, anyone can join conversation by uuid

            customData

            Conversation custom data

            uuid

            Conversation UUID

            sequnce

            Sequence of last event

            moderators

            Array of conversation’s moderators

            lastUpdate

            UNIX timestamp that specifies the time of the last event in the conversation

            lastRead

            Sequence of last event that was read by user

            createdAt

            UNIX timestamp that specifies the time of the conversation creation

            Return

            VIConversation instance

            –  recreateMessage:conversation:sender:text:payload:sequence:

            Recreate a message. Note that this method does not create message, but restore previously created message.

            - (VIMessage *)recreateMessage:(NSString *)uuid conversation:(NSString *)conversationUUID sender:(NSString *)sender text:(NSString *)text payload:(NSArray<VIPayload*> *)payload sequence:(NSNumber *)sequence
            Parameters
            uuid

            Universally unique identifier of message

            conversationUUID

            UUID of the conversation this message belongs to

            sender

            User id of the sender of this message

            text

            Text of this message

            payload

            Array of VIPayload objects associated with the message

            sequence

            Message sequence number

            Return

            VIMessage instance

            VIMessengerEvent

            Interface that represents all messenger events provided via VIMessengerDelegate.

            Members
            eventType

            Type of event

            @property (nonatomic, assign, readonly) VIMessengerEventType eventType
            incomingAction

            Action that is the reason this event was triggered

            @property (nonatomic, assign, readonly) VIMessengerActionType incomingAction
            userId

            Voximplant user identifier, ex username@appname.accname, of the user that initiated the event.

            @property (nonatomic, strong, readonly) NSString *userId

            VIMessengerEventSeq

            Interface that represents all messenger events provided via VIMessengerDelegate that have event sequence number.

            Members
            seq

            Event sequence number

            @property (nonatomic, strong) NSNumber *seq

            VIMessengerPushNotificationProcessing

            Helper to process incoming VoxImplant messenger push notifications.

            Members
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            +  sharedMessengerPushNotificationProcessing

            Get VIMessengerPushNotificationProcessing instance

            + (instancetype)sharedMessengerPushNotificationProcessing
            Return

            VIMessengerPushNotificationProcessing instance

            –  processPushNotification:

            Process incoming VoxImplant messenger push notification and return appropriate messenger event object inheriting VIMessengerEvent.

            - (VIMessengerEvent *)processPushNotification:(NSDictionary *)notification
            Parameters
            notification

            Incoming push notification that comes from this method

            Return

            VIMessengerEvent object or nil if the notification is not VoxImplant messenger push notification

            VIPayload

            Interface that represent message payload format.

            Members
            data

            Payload data

            @property (nonatomic, strong) NSObject *data
            title

            Payload fragment unique title. Used to identifier fragment in the list of fragments associated with the message

            @property (nonatomic, strong) NSString *title
            type

            Arbitrary payload type

            @property (nonatomic, strong) NSString *type
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            –  initWithTitle:type:dataString:

            Initialize VIPayload with NSString

            - (instancetype)initWithTitle:(NSString *)title type:(NSString *)type dataString:(NSString *)dataString
            Parameters
            title

            Payload fragment unique title.

            type

            Arbitrary payload type

            dataString

            Payload data string

            Return

            VIPayload instance

            –  initWithTitle:type:dataDictionary:

            Initialize VIPayload with NSDictionary

            - (instancetype)initWithTitle:(NSString *)title type:(NSString *)type dataDictionary:(NSDictionary *)dataDictionary
            Parameters
            title

            Payload fragment unique title.

            type

            Arbitrary payload type

            dataDictionary

            Payload data disctionary

            Return

            VIPayload instance

            –  initWithTitle:type:dataArray:

            Initialize VIPayload with NSArray

            - (instancetype)initWithTitle:(NSString *)title type:(NSString *)type dataArray:(NSArray *)dataArray
            Parameters
            title

            Payload fragment unique title.

            type

            Arbitrary payload type

            dataArray

            Payload data array

            Return

            VIPayload instance

            VIRetransmitEvent

            Interface that represents messenger event for [VIConversation retransmitEventsFrom:to:] method call result.

            Members
            events

            Array of event objects that was retransmitted.

            @property (nonatomic, strong, readonly) NSArray<VIMessengerEventSeq*> *events

            VIStreamStat

            Stream statistics

            Members
            streamId

            Unique stream id as a string, same as “streamId” for VIVideoStream

            @property (nonatomic, copy, readonly) NSString *streamId
            codec

            Audio or video codec name, ex “VP8” or “H264”

            @property (nonatomic, copy, readonly) NSString *codec
            dir

            Stream direction: VIStreamDirectionSend for streams directed from this device, VIStreamDirectionRecv for streams directed to this device

            @property (nonatomic, assign, readonly) VIStreamDirection dir
            type

            Stream type: VIStreamTypeAudio or VIStreamTypeVideo. VIStreamTypeUnknown for future SDK versions compatibility

            @property (nonatomic, assign, readonly) VIStreamType type
            bytes

            Number of bytes transferred through stream

            @property (nonatomic, assign, readonly) NSInteger bytes
            packets

            Number of packets transferred through stream

            @property (nonatomic, assign, readonly) NSInteger packets
            packetsLost

            Total number of packets lost

            @property (nonatomic, assign, readonly) NSInteger packetsLost
            packetLossPercents

            Total packet loss percentage from 0 to 100

            @property (nonatomic, assign, readonly) NSInteger packetLossPercents
            packetLossCurrentPercents

            Packet loss percentage from 0 to 100 for last 5 seconds.

            @property (nonatomic, assign, readonly) NSInteger packetLossCurrentPercents
            jitterMs

            Jitter delay, in milliseconds, for receive streams. For send streams always 0.

            @property (nonatomic, assign, readonly) NSInteger jitterMs
            jitterBufferMs

            Jitter delay, in milliseconds, for single buffer, for receive streams. For send streams always 0

            @property (nonatomic, assign, readonly) NSInteger jitterBufferMs
            videoFrame

            Video frame size, in pixels, for video streams. For audio streams always 0.

            @property (nonatomic, assign, readonly) CGSize videoFrame
            videoFps

            Current video FPS, for video streams. For audio streams always 0.

            @property (nonatomic, assign, readonly) NSInteger videoFps

            VISubscribeEvent

            Interface that represents messenger events related to subscriptions.

            Members
            users

            Array of Voximplant user identifiers of current (un)subscription

            @property (nonatomic, strong, readonly) NSArray<NSString*> *users

            VIUser

            Interface that represents user description.

            Members
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            conversationList

            Array of UUIDs for the conversations the user has joined.

            @property (nonatomic, strong, readonly) NSArray<NSString*> *conversationList
            customData

            Public custom data available to all users

            @property (nonatomic, strong, readonly) NSDictionary *customData
            privateCustomData

            Private custom data available only to the user himself.

            @property (nonatomic, strong, readonly) NSDictionary *privateCustomData
            userId

            Voximplant user identifier, ex username@appname.accname.

            @property (nonatomic, strong, readonly) NSString *userId
            notifications

            Array of messenger notifications that current user is subscribed to

            @property (nonatomic, strong, readonly) NSArray<NSNumber*> *notifications

            VIUserEvent

            Interface that represents messenger events related to user, such as get or edit user.

            Members
            user

            VIUser instance with user information

            @property (nonatomic, strong, readonly) VIUser *user

            VIUserStatusEvent

            Interface that represents messenger events related to user presence state changes.

            Members
            online

            User presence status.

            @property (nonatomic, assign, readonly) BOOL online
            timestamp

            UNIX timestamp that specifies the time event was triggered.

            @property (nonatomic, strong, readonly) NSNumber *timestamp

            VIVideoFormat

            Interface that represents video format

            Members
            frame

            Frame size

            @property (nonatomic, assign, readonly) CGSize frame
            interval

            Time interval between frames in milliseconds

            @property (nonatomic, assign, readonly) NSUInteger interval
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            –  initWithFrame:fps:

            Initialize VIVideoFormat with frame size and fps

            - (instancetype)initWithFrame:(CGSize)frame fps:(NSUInteger)fps
            Parameters
            frame

            Frame size

            fps

            FPS

            Return

            VIVideoFormat instance

            –  initWithFrame:interval:

            Initialize VIVideoFormat with frame size and interval

            - (instancetype)initWithFrame:(CGSize)frame interval:(NSUInteger)interval
            Parameters
            frame

            Frame size

            interval

            Time interval between frames in milliseconds

            Return

            VIVideoFormat instance

            VIVideoRendererView

            iOS view that renders remote video or local camera preview video

            Members
            resizeMode

            Resize mode for video renderer.

            @property (nonatomic, assign) VIVideoResizeMode resizeMode
            –  init

            Warning: NS_UNAVAILABLE

            - (instancetype)init
            –  initWithContainerView:

            Initialize VIVideoRendererView instance

            - (instancetype)initWithContainerView:(UIView *)containerView
            Parameters
            containerView

            UIView to which video renderer will be added as a subview.

            Return

            VIVideoRendererView instance

            VIVideoSource

            Base class for all video sources. See VICustomVideoSource and VICameraManager for more information.

            Members

              VIVideoStat

              Video statistics

              Members
              retransmitBitrate

              Current video retransmit bitrate, in bits per second, high in case of poor network connection.

              @property (nonatomic, assign, readonly) NSInteger retransmitBitrate
              transmitBitrate

              Current video transmit bitrate, in bits per second

              @property (nonatomic, assign, readonly) NSInteger transmitBitrate
              availableSendBandwidth

              Current send bandwidth that is assumed by the engine to be available for sending video, in bits per second.

              @property (nonatomic, assign, readonly) NSInteger availableSendBandwidth

              VIVideoStream

              Interface representing local and remote video streams. It may be used to add or remove video renderers.

              Members
              renderers

              Video renderers associated with the stream. UI elements of RTCVideoRenderer type are used to display local preview or remote video.

              @property (nonatomic, strong, readonly) NSSet<id<RTCVideoRenderer> > *renderers
              stat

              Statistics for the video stream. Updated every 5 seconds.

              @property (nonatomic, strong, readonly) VIStreamStat *stat
              streamId

              The video stream id.

              @property (nonatomic, copy, readonly) NSString *streamId
              –  init

              Warning: NS_UNAVAILABLE

              - (instancetype)init
              –  addRenderer:

              Add new video renderer to the video stream. UI elements of RTCVideoRenderer type are used to display local preview or remote video.

              - (void)addRenderer:(id<RTCVideoRenderer>)renderer
              Parameters
              renderer

              New video renderer to be added

              –  removeRenderer:

              Remove previously added video renderer from the video stream. UI elements of RTCVideoRenderer type are used to display local preview or remote video.

              - (void)removeRenderer:(id<RTCVideoRenderer>)renderer
              Parameters
              renderer

              Previously added video renderer

              –  removeAllRenderers

              Remove all video renderers associated with the video stream

              - (void)removeAllRenderers

              VoxImplant

              Main VoxImplant SDK class. Should not be instantiated directly, use getInstance instead.

              Warning: Deprecated. Use VIClient, VICall instead.

              Members
              Other Methods
              voxDelegate

              Set delegate object for SDK

              Warning: Deprecated. Use VIClientSessionDelegate delegate to handle connection to VoxImplant Cloud events, VICallDelegate delegate to handle call events and VIClientCallManagerDelegate delegate to handle incoming calls.

              @property (nonatomic, weak) id<VoxImplantDelegate> voxDelegate
              –  getVoxDelegate

              Returns current delegate

              Warning: Deprecated. Use [VIClient sessionDelegate] to get connection delegate, [VIClient callManagerDelegate] to get incoming call delegate instead.

              - (id<VoxImplantDelegate>)getVoxDelegate
              Return

              Previously set VoxImplantDelegate delegate

              +  setLogLevel:

              Sets a verbosity level for log messages. Note that this method must be called before creating SDK object instance.

              Warning: Deprecated. Use [VIClient setLogLevel:] instead.

              + (void)setLogLevel:(enum VoxImplantLogLevel)logLevel
              Parameters
              logLevel

              Log verbosity level

              +  saveLogToFileEnable

              Enables save logs to file. Log files located at: Library/Caches/Logs. Note that this method must be called before creating SDK object instance.

              Warning: Deprecated. Use [VIClient saveLogToFileEnable] instead.

              + (void)saveLogToFileEnable
              +  getInstance

              Returns single SDK object instance

              Warning: Deprecated. Use [VIClient initWithDelegateQueue:] instead.

              + (VoxImplant *)getInstance
              Return

              SingleSDK object instance.

              Connect to VoxImplant Cloud
              –  connect

              Connect to VoxImplant cloud

              Warning: Deprecated. Use [VIClient connect] intead.

              - (void)connect
              –  connect:

              Connect to VoxImplant cloud

              Warning: Deprecated. Use [VIClient connectWithConnectivityCheck:gateways:] instead.

              - (void)connect:(bool)connectivityCheck
              Parameters
              connectivityCheck

              Checks whether UDP traffic will flow correctly between device and VoxImplant cloud. This check reduces connection speed.

              –  disableTLS

              Disable TLS encryption for signalling connection. Media data will be encrypted anyway

              Warning: Deprecated.

              - (void)disableTLS
              –  closeConnection

              Closes connection with media server

              Warning: Deprecated. Use [VIClient disconnect] instead.

              - (void)closeConnection
              Login to VoxImplant Cloud
              –  loginWithUsername:andPassword:

              Login to VoxImplant using specified username and password

              Warning: Deprecated. Use [VIClient loginWithUser:password:success:failure:] instead.

              - (void)loginWithUsername:(NSString *)user andPassword:(NSString *)password
              Parameters
              user

              Username combined with application name, for example testuser@testapp.testaccount.voximplant.com

              password

              Password in plain text

              –  loginWithUsername:andOneTimeKey:

              Perform login using one time key that was generated before

              - (void)loginWithUsername:(NSString *)user andOneTimeKey:(NSString *)hash
              Parameters
              user

              Full user name, including app and account name, like someuser@someapp.youraccount.voximplant.com

              hash

              Hash that was generated using following formula:

               MD5(oneTimeKey+"|"+MD5(user+":voximplant.com:"+password))
              

              Please note that here user is just a user name, without app name, account name or anything else after “@”. So if you pass myuser@myapp.myacc.voximplant.com as a username, you should only use myuser while computing this hash.

              –  loginWithUsername:andToken:

              Login to VoxImplant using specified username and password

              Warning: Deprecated. Use [VIClient loginWithUser:token:success:failure:] instead.

              - (void)loginWithUsername:(NSString *)user andToken:(NSString *)token
              Parameters
              user

              Username combined with application name, for example testuser\@testapp.testaccount.voximplant.com

              –  refreshTokenWithUsername:andToken:

              Perform refresh of login tokens required for login using access token

              Warning: Deprecated. Use [VIClient refreshTokenWithUser:token:result:] instead.

              - (void)refreshTokenWithUsername:(NSString *)user andToken:(NSString *)token
              Parameters
              user

              Username combined with application name, for example testuser@testapp.testaccount.voximplant.com

              token

              Refresh token

              –  requestOneTimeKeyWithUsername:

              Generates one time login key to be used for automated login process.

              Warning: Deprecated. Use [VIClient requestOneTimeKeyWithUser:result:] instead.

              - (void)requestOneTimeKeyWithUsername:(NSString *)user
              Parameters
              user

              Full user name, including app and account name, like someuser@someapp.youraccount.voximplant.com

              Call Management
              –  createCall:withVideo:andCustomData:

              Create new call instance. Call must be then started using startCall:withHeaders: method.

              - (NSString *)createCall:(NSString *)to withVideo:(bool)video andCustomData:(NSString *)customData
              Parameters
              to

              SIP URI, username or phone number to make call to. Actual routing is then performed by VoxEngine scenario

              video

              Enable video support in call

              customData

              Custom data passed with call. Will be available in VoxEngine scenario

              Return

              Pointer to a string representation of the call id

              –  startCall:withHeaders:

              Send start call request.

              Warning: Deprecated. Use [VICall startWithHeaders:] instead.

              - (bool)startCall:(NSString *)callId withHeaders:(NSDictionary *)headers
              Parameters
              callId

              id of previously created call

              headers

              Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

              Return

              True in case of success, false otherwise (f.ex. if call with specified id is not found)

              –  attachAudioTo:

              Attach audio and video to specified call

              Warning: Deprecated.

              - (bool)attachAudioTo:(NSString *)callId
              Parameters
              callId

              id of previously created call

              Return

              True in case of success, false otherwise (f.ex. if call with specified id is not found)

              –  sendDTMF:digit:

              Sends DTMF digit in specified call.

              Warning: Deprecated. Use [VICall sendDTMF:] instead.

              - (void)sendDTMF:(NSString *)callId digit:(int)digit
              Parameters
              callId

              id of previously created call

              digit

              Digit can be 0-9 for 0-9, 10 for * and 11 for #

              –  disconnectCall:withHeaders:

              Terminates specified call. Call must be either established, or outgoing progressing

              Warning: Deprecated. Use [VICall hangupWithHeaders:] instead.

              - (bool)disconnectCall:(NSString *)callId withHeaders:(NSDictionary *)headers
              Parameters
              callId

              id of previously created call

              headers

              Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

              Return

              True in case of success, false otherwise (f.ex. if call with specified id is not found)

              –  declineCall:withHeaders:

              Rejects incoming alerting call

              Warning: Deprecated. Use [VICall rejectWithHeaders:] instead.

              - (void)declineCall:(NSString *)callId withHeaders:(NSDictionary *)headers
              Parameters
              callId

              id of previously created call

              headers

              Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

              –  answerCall:withCustomData:headers:

              Answers incoming alerting call

              - (void)answerCall:(NSString *)callId withCustomData:(NSString *)customData headers:(NSDictionary *)headers
              Parameters
              callId

              id of previously created call

              customData

              Optional custom data passed with call. Will be available in VoxEngine scenario

              headers

              Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

              –  sendMessage:withText:andHeaders:

              Sends instant message within established call

              Warning: Deprecated. Use [VICall sendMessage:headers:] instead.

              - (void)sendMessage:(NSString *)callId withText:(NSString *)text andHeaders:(NSDictionary *)headers
              Parameters
              callId

              id of previously created call

              text

              Message text

              headers

              Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

              –  sendInfo:withType:content:andHeaders:

              Sends info within established call

              Warning: Deprecated. Use [VICall sendInfo:mimeType:headers:] instead.

              - (void)sendInfo:(NSString *)callId withType:(NSString *)mimeType content:(NSString *)content andHeaders:(NSDictionary *)headers
              Parameters
              callId

              id of previously created call

              mimeType

              MIME type of info

              content

              Custom string data

              headers

              Optional set of headers to be sent with message. Names must begin with “X-” to be processed by SDK

              –  getCallDuration:

              Get call duration for established call

              Warning: Deprecated. Use [VICall duration] instead.

              - (NSTimeInterval)getCallDuration:(NSString *)callId
              Parameters
              callId

              id of previously created call

              Return

              Call duration. 0 if call already disconnected.

              –  setMute:

              Mute or unmute microphone. This is reset after audio interruption

              Warning: Deprecated. Use [VICall sendAudio] instead.

              - (void)setMute:(bool)b
              Parameters
              b

              Enable/disable flag

              –  setUseLoudspeaker:

              Enable/disable loudspeaker (doesn’t make sence for iPad, since it has only loudspeaker)

              Warning: Deprecated. Use [VIAudioManager useLoudSpeaker] instead.

              - (bool)setUseLoudspeaker:(bool)b
              Parameters
              b

              Enable/disable flag

              –  setVideoResizeMode:

              Set video display mode. Applies to both incoming and outgoing stream

              Warning: Deprecated. Use [VIVideoRendererView resizeMode] instead.

              - (void)setVideoResizeMode:(enum VoxImplantVideoResizeMode)mode
              Parameters
              mode

              Resize mode

              –  getVideoResizeMode

              Get video display mode. Applies to both incoming and outgoing streams

              Warning: Deprecated.

              - (enum VoxImplantVideoResizeMode)getVideoResizeMode
              Return

              Resize mode

              –  sendVideo:

              Stop/start sending video during the call

              Warning: Deprecated. Use [VICall setSendVideo:completion:] instead.

              - (void)sendVideo:(BOOL)doSend
              Parameters
              doSend

              Specify if video should be sent

              –  setLocalPreview:

              Set container for local video preview

              Warning: Deprecated. Use [VIVideoStream addRenderer:] instead.

              - (void)setLocalPreview:(UIView *)view
              Parameters
              view

              UIView

              –  setRemoteView:

              Set container for remote video display

              Warning: Deprecated. Use [VIVideoStream addRenderer:] instead.

              - (void)setRemoteView:(UIView *)view
              Parameters
              view

              UIView

              –  setRemoteView:forCall:

              Set container for remote video display for call

              Warning: Deprecated. Use [VIVideoStream addRenderer:] instead.

              - (void)setRemoteView:(UIView *)view forCall:(NSString *)callId
              Parameters
              view

              UIView

              callId

              id of the call

              –  setResolution:andHeight:

              Set resolution of video being sent to remote participant

              Warning: Deprecated. Use [VICameraManager changeCaptureFormat:] instead.

              - (void)setResolution:(int)width andHeight:(int)height
              Parameters
              width

              Camera resolution width

              height

              Camera resolution height

              –  connectTo:

              Connect to particular VoxImplant media gateway

              Warning: Deprecated. Use [VIClient connectWithConnectivityCheck:gateways:] instead.

              - (void)connectTo:(NSString *)host
              Parameters
              host

              Server name of particular media gateway for connection

              –  hasFrontFacingCamera

              Check if device has front facing camera

              Warning: Deprecated.

              - (BOOL)hasFrontFacingCamera
              Return

              True if device has front facing camera, false otherwise

              –  switchToCameraWithPosition:

              Switch to front/back camera

              Warning: Deprecated. Use [VICameraManager useBackCamera]

              - (BOOL)switchToCameraWithPosition:(AVCaptureDevicePosition)position
              Parameters
              position

              Capture device position

              Return

              True in case of success, false otherwise

              –  setHold:forCall:

              Hold/unhold the call

              - (void)setHold:(BOOL)hold forCall:(NSString *)callId
              Parameters
              hold

              True if the call should be put on hold, false otherwise

              callId

              The call id

              PushNotifications Methods
              –  registerPushNotificationsToken:

              Register Apple Push Notifications token, after calling this function, application will receive push notifications from Voximplant Server.

              Warning: Deprecated. Use [VIClient registerPushNotificationsToken:imToken:] instead.

              - (void)registerPushNotificationsToken:(NSData *)token
              Parameters
              token

              The APNS token which comes from:

               - (void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(PKPushType)type;
              
              –  unregisterPushNotificationsToken:

              Unregister Apple Push Notifications token, after calling this function, application stops receive push notifications from Voximplant Server.

              - (void)unregisterPushNotificationsToken:(NSData *)token
              Parameters
              token

              The APNS token which comes from:

               - (void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(PKPushType)type;
              
              –  handlePushNotification:

              Handle incoming push notification

              Warning: Deprecated. Use [VIClient handlePushNotification:] instead.

              - (void)handlePushNotification:(NSDictionary *)notification
              Parameters
              notification

              The incomming notification which comes from:

               - (void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(PKPushType)type { ... }
              

              Members
                Enum
                VILogLevel

                Log level

                typedef NS_ENUM(NSUInteger, VILogLevel ) {
                   VILogLevelDisabled,
                   VILogLevelError,
                   VILogLevelWarning,
                   VILogLevelInfo,
                   VILogLevelDebug,
                   VILogLevelVerbose,
                   VILogLevelMax,
                };
                VILogLevelDisabled

                Log verbosity level to disable logs.

                VILogLevelError

                Log verbosity level to include only error messages.

                VILogLevelWarning

                Log verbosity level to include warnings messages.

                VILogLevelInfo

                Log verbosity level to include info messages.

                VILogLevelDebug

                Log verbosity level to include debug messages.

                VILogLevelVerbose

                Log verbosity level to include verbose messages.

                VILogLevelMax

                Log verbosity level to include all types of messages.

                Members
                  Enum
                  VIMessengerActionType

                  Actions that trigger messenger events.

                  typedef NS_ENUM(NSInteger, VIMessengerActionType ) {
                     VIMessengerActionTypeCreateConversation,
                     VIMessengerActionTypeRemoveConversation,
                     VIMessengerActionTypeJoinConversation,
                     VIMessengerActionTypeLeaveConversation,
                     VIMessengerActionTypeEditConversation,
                     VIMessengerActionTypeGetUser,
                     VIMessengerActionTypeGetUsers,
                     VIMessengerActionTypeEditUser,
                     VIMessengerActionTypeGetConversation,
                     VIMessengerActionTypeGetConversations,
                     VIMessengerActionTypeAddParticipants,
                     VIMessengerActionTypeEditParticipants,
                     VIMessengerActionTypeRemoveParticipants,
                     VIMessengerActionTypeAddModerators,
                     VIMessengerActionTypeRemoveModerators,
                     VIMessengerActionTypeMarkAsDelivered,
                     VIMessengerActionTypeMarkAsRead,
                     VIMessengerActionTypeTyping,
                     VIMessengerActionTypeRetransmitEvents,
                     VIMessengerActionTypeSubscribe,
                     VIMessengerActionTypeUnsubscribe,
                     VIMessengerActionTypeSetStatus,
                     VIMessengerActionTypeSendMessage,
                     VIMessengerActionTypeEditMessage,
                     VIMessengerActionTypeRemoveMessage,
                     VIMessengerActionTypeManageNotifications,
                     VIMessengerActionTypeUnknown,
                  };
                  VIMessengerActionTypeCreateConversation

                  Create conversation action

                  VIMessengerActionTypeRemoveConversation

                  Remove conversation action

                  VIMessengerActionTypeJoinConversation

                  Join conversation action

                  VIMessengerActionTypeLeaveConversation

                  Leave conversation action

                  VIMessengerActionTypeEditConversation

                  Edit conversation action

                  VIMessengerActionTypeGetUser

                  Get user action

                  VIMessengerActionTypeGetUsers

                  Get users action

                  VIMessengerActionTypeEditUser

                  Edit user action

                  VIMessengerActionTypeGetConversation

                  Get conversation action

                  VIMessengerActionTypeGetConversations

                  Get conversations action

                  VIMessengerActionTypeAddParticipants

                  Add participants action

                  VIMessengerActionTypeEditParticipants

                  Edit participants action

                  VIMessengerActionTypeRemoveParticipants

                  Remove participants action

                  VIMessengerActionTypeAddModerators

                  Add moderators action

                  VIMessengerActionTypeRemoveModerators

                  Remove moderators action

                  VIMessengerActionTypeMarkAsDelivered

                  Mark as delivered action

                  VIMessengerActionTypeMarkAsRead

                  Mark as read action

                  VIMessengerActionTypeTyping

                  Typing action

                  VIMessengerActionTypeRetransmitEvents

                  Retransmit events action

                  VIMessengerActionTypeSubscribe

                  Subscribe action

                  VIMessengerActionTypeUnsubscribe

                  Unsubscribe action

                  VIMessengerActionTypeSetStatus

                  Set status action

                  VIMessengerActionTypeSendMessage

                  Send message action

                  VIMessengerActionTypeEditMessage

                  Edit message action

                  VIMessengerActionTypeRemoveMessage

                  Remove message action

                  VIMessengerActionTypeManageNotifications

                  Manage notifications action

                  VIMessengerActionTypeUnknown

                  Unsubscribe action

                  Members
                    Enum
                    VIMessengerEventType

                    Types of messenger events

                    typedef NS_ENUM(NSInteger, VIMessengerEventType ) {
                       VIMessengerEventTypeError,
                       VIMessengerEventTypeGetUser,
                       VIMessengerEventTypeEditUser,
                       VIMessengerEventTypeCreateConversation,
                       VIMessengerEventTypeRemoveConversation,
                       VIMessengerEventTypeEditConversation,
                       VIMessengerEventTypeGetConversation,
                       VIMessengerEventTypeSubscribe,
                       VIMessengerEventTypeUnsubscribe,
                       VIMessengerEventTypeSendMessage,
                       VIMessengerEventTypeEditMessage,
                       VIMessengerEventTypeRemoveMessage,
                       VIMessengerEventTypeTyping,
                       VIMessengerEventTypeRead,
                       VIMessengerEventTypeDelivered,
                       VIMessengerEventTypeUserStatus,
                       VIMessengerEventTypeRetransmit,
                       VIMessengerEventTypeUnknown,
                    };
                    VIMessengerEventTypeError

                    Error event

                    VIMessengerEventTypeGetUser

                    Get user event

                    VIMessengerEventTypeEditUser

                    Edit user event

                    VIMessengerEventTypeCreateConversation

                    Create conversation event

                    VIMessengerEventTypeRemoveConversation

                    Remove conversation event

                    VIMessengerEventTypeEditConversation

                    Edit conversation event

                    VIMessengerEventTypeGetConversation

                    Get conversation event

                    VIMessengerEventTypeSubscribe

                    Subscribe event

                    VIMessengerEventTypeUnsubscribe

                    Unsubscribe event

                    VIMessengerEventTypeSendMessage

                    Send message event

                    VIMessengerEventTypeEditMessage

                    Edit message event

                    VIMessengerEventTypeRemoveMessage

                    Remove message event

                    VIMessengerEventTypeTyping

                    Typing event

                    VIMessengerEventTypeRead

                    Marked as read event

                    VIMessengerEventTypeDelivered

                    Marked as delivered event

                    VIMessengerEventTypeUserStatus

                    User status event

                    VIMessengerEventTypeRetransmit

                    Retransmit event

                    VIMessengerEventTypeUnknown

                    Unknown event

                    Members
                      Enum
                      VIMessengerNotification

                      Events available for push notification subscription.

                      typedef NS_ENUM(NSInteger, VIMessengerNotification ) {
                         VIMessengerNotificationEditMessage,
                         VIMessengerNotificationSendMessage,
                      };
                      VIMessengerNotificationEditMessage

                      Notify that message in a conversation is edited

                      VIMessengerNotificationSendMessage

                      Notify about new message in a conversation

                      Members
                        Enum
                        VIRotation

                        Enum of supported video rotation modes

                        typedef NS_ENUM(NSInteger, VIRotation ) {
                           VIRotation_0 = 0,
                           VIRotation_90 = 90,
                           VIRotation_180 = 180,
                           VIRotation_270 = 270,
                        };
                        VIRotation_0

                        No rotation

                        VIRotation_90

                        90 degrees clockwise rotation

                        VIRotation_180

                        180 degrees clockwise rotation

                        VIRotation_270

                        270 degrees clockwise rotation

                        Members
                          Enum
                          VIStreamDirection

                          Enum of supported audio/video stream directions

                          typedef NS_ENUM(NSUInteger, VIStreamDirection ) {
                             VIStreamDirectionSend,
                             VIStreamDirectionRecv,
                          };
                          VIStreamDirectionSend

                          Stream is directed from this SDK toward the Voximplant cloud or toward another SDK in Peer-to-Peer mode

                          VIStreamDirectionRecv

                          Stream is directed to this SDK from the Voximplant cloud or from another SDK in Peer-to-Peer mode

                          Members
                            Enum
                            VIStreamType

                            Enum of supported stream types

                            typedef NS_ENUM(NSUInteger, VIStreamType ) {
                               VIStreamTypeUnknown,
                               VIStreamTypeAudio,
                               VIStreamTypeVideo,
                            };
                            VIStreamTypeUnknown

                            Stream is not video or audio, defined for future compatibility

                            VIStreamTypeAudio

                            Audio stream

                            VIStreamTypeVideo

                            Video stream

                            Members
                              Enum
                              VIVideoResizeMode

                              Enum of supported video resize modes

                              typedef NS_ENUM(NSUInteger, VIVideoResizeMode ) {
                                 VIVideoResizeModeFit,
                                 VIVideoResizeModeFill,
                              };
                              VIVideoResizeModeFit

                              Video frame is scaled to be fit the size of the view by maintaining the aspect ratio (black borders may be displayed).

                              VIVideoResizeModeFill

                              Video frame is scaled to fill the size of the view by maintaining the aspect ratio. Some portion of the video frame may be clipped.

                              VICallDelegate

                              Delegate that may be used to handle call events.

                              Members
                              –  call:didFailWithError:headers:

                              Triggered if the call is failed.

                              - (void)call:(VICall *)call didFailWithError:(NSError *)error headers:(NSDictionary *)headers
                              Parameters
                              call

                              Call that triggered the event

                              error

                              Error that contains status code and status message of the call failure

                              headers

                              Optional headers passed with event

                              –  call:didConnectWithHeaders:

                              Triggered after call was successfully connected.

                              - (void)call:(VICall *)call didConnectWithHeaders:(NSDictionary *)headers
                              Parameters
                              call

                              Call that triggered the event

                              headers

                              Optional headers passed with event

                              –  call:didDisconnectWithHeaders:answeredElsewhere:

                              Triggered after the call was disconnected.

                              - (void)call:(VICall *)call didDisconnectWithHeaders:(NSDictionary *)headers answeredElsewhere:(NSNumber *)answeredElsewhere
                              Parameters
                              call

                              Call that triggered the event

                              headers

                              Optional headers passed with event

                              answeredElsewhere

                              true if call was answered on another device

                              –  call:startRingingWithHeaders:

                              Triggered if the call is ringing. You should start playing call progress tone now.

                              - (void)call:(VICall *)call startRingingWithHeaders:(NSDictionary *)headers
                              Parameters
                              call

                              Call that triggered the event

                              headers

                              Optional headers passed with event

                              –  callDidStartAudio:

                              Triggered after audio is started in the call. You should stop playing progress tone when event is received

                              - (void)callDidStartAudio:(VICall *)call
                              Parameters
                              call

                              Call that triggered the event

                              –  call:didReceiveMessage:headers:

                              Triggered when message is received within the call. Implemented atop SIP INFO for communication between call endpoint and Voximplant cloud, and is separated from Voximplant messaging API.

                              - (void)call:(VICall *)call didReceiveMessage:(NSString *)message headers:(NSDictionary *)headers
                              Parameters
                              call

                              Call that triggered the event

                              message

                              Content of the message

                              headers

                              Optional headers passed with event

                              –  call:didReceiveInfo:type:headers:

                              Triggered when INFO message is received within the call.

                              - (void)call:(VICall *)call didReceiveInfo:(NSString *)body type:(NSString *)type headers:(NSDictionary *)headers
                              Parameters
                              call

                              Call that triggered the event

                              body

                              Body of INFO message

                              type

                              MIME type of INFO message

                              headers

                              Optional headers passed with event

                              –  call:didReceiveStatistics:

                              Triggered when call statistics are available for the call.

                              - (void)call:(VICall *)call didReceiveStatistics:(VICallStat *)stat
                              Parameters
                              call

                              Call that triggered the event

                              stat

                              Call statistics

                              –  call:didAddLocalVideoStream:

                              Triggered when local video stream is added to the call. The event is triggered on the main thread.

                              - (void)call:(VICall *)call didAddLocalVideoStream:(VIVideoStream *)videoStream
                              Parameters
                              call

                              Call that triggered the event

                              videoStream

                              Local video stream that is added to the call

                              –  call:didRemoveLocalVideoStream:

                              Triggered when local video stream is removed from the call. The event is triggered on the main thread.

                              - (void)call:(VICall *)call didRemoveLocalVideoStream:(VIVideoStream *)videoStream
                              Parameters
                              call

                              Call that triggered the event

                              videoStream

                              Local video stream that is removed to the call

                              –  iceCompleteForCall:

                              Triggered when ICE connection is complete

                              - (void)iceCompleteForCall:(VICall *)call
                              Parameters
                              call

                              Call that triggered the event

                              –  iceTimeoutForCall:

                              Triggered if connection was not established due to network connection problem between 2 peers

                              - (void)iceTimeoutForCall:(VICall *)call
                              Parameters
                              call

                              Call that triggered the event

                              VIClientCallManagerDelegate

                              Delegate that may be used to handle incoming calls

                              Members
                              –  client:didReceiveIncomingCall:withIncomingVideo:headers:  required

                              Triggered when there is a new incoming call to current user.

                              - (void)client:(VIClient *)client didReceiveIncomingCall:(VICall *)call withIncomingVideo:(BOOL)video headers:(NSDictionary *)headers
                              Parameters
                              client

                              VIClient instance

                              call

                              VICall instance

                              video

                              True if incoming call offers video, false otherwise

                              headers

                              Optional headers passed with event

                              VIClientSessionDelegate

                              Delegate that may be used to handle events for connection with VoxImplant Cloud.

                              Members
                              –  clientSessionDidConnect:  required

                              Triggered after connection to VoxImplant Cloud was established successfully.

                              - (void)clientSessionDidConnect:(VIClient *)client
                              Parameters
                              client

                              VIClient instance

                              –  clientSessionDidDisconnect:  required

                              Triggered if connection to VoxImplant Cloud was closed

                              - (void)clientSessionDidDisconnect:(VIClient *)client
                              Parameters
                              client

                              VIClient instance

                              –  client:sessionDidFailConnectWithError:  required

                              Triggered if connection to VoxImplant Cloud couldn’t be established

                              - (void)client:(VIClient *)client sessionDidFailConnectWithError:(NSError *)error
                              Parameters
                              client

                              VIClient instance

                              error

                              Error description

                              VICustomVideoSourceDelegate

                              Delegate that may be used to handle custom video source events

                              Members
                              –  startWithVideoFormat:  required

                              Triggered when custom video source is started

                              - (void)startWithVideoFormat:(VIVideoFormat *)format
                              Parameters
                              format

                              Video format

                              –  stop  required

                              Triggered when custom video source is stopped

                              - (void)stop

                              VIEndpointDelegate

                              Delegate that may be used to handle endpoint events

                              Members
                              –  endpoint:didAddRemoteVideoStream:

                              Triggered after endpoint added video stream to the call. Triggered always on the main thread, even delegateQueue is not the main thread

                              - (void)endpoint:(VIEndpoint *)endpoint didAddRemoteVideoStream:(VIVideoStream *)videoStream
                              Parameters
                              endpoint

                              VIEndpoint that triggered this event

                              videoStream

                              Remote video stream added to the call

                              –  endpoint:didRemoveRemoteVideoStream:

                              Triggered after endpoint removed video stream from the call. Triggered always on the main thread, even delegateQueue is not the main thread

                              - (void)endpoint:(VIEndpoint *)endpoint didRemoveRemoteVideoStream:(VIVideoStream *)videoStream
                              Parameters
                              endpoint

                              VIEndpoint that triggered this event

                              videoStream

                              Remote video stream removed from the call

                              VIMessengerDelegate

                              Delegate that may be used to handle messenger events.

                              Members
                              –  messenger:didGetUser:  required

                              Triggered as a result of [VIMessenger getUser:] method call

                              - (void)messenger:(VIMessenger *)messenger didGetUser:(VIUserEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIUserEvent object with user data and service information

                              –  messenger:didEditUser:  required

                              Triggered as the result of [VIMessenger editUserWithCustomData:privateCustomData:] method call. Triggered only for users specified in the ‘subscribe’ method call.

                              - (void)messenger:(VIMessenger *)messenger didEditUser:(VIUserEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIUserEvent object with user data and service information

                              –  messenger:didSubscribe:  required

                              Triggered as the result of [VIMessenger subscribe:] method call.

                              - (void)messenger:(VIMessenger *)messenger didSubscribe:(VISubscribeEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VISubscribeEvent object with subscription data and service information

                              –  messenger:didUnsubscribe:  required

                              Triggered as the result of [VIMessenger unsubscribe:] method call.

                              - (void)messenger:(VIMessenger *)messenger didUnsubscribe:(VISubscribeEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VISubscribeEvent object with subscription data and service information

                              –  messenger:didReceiveError:  required

                              Triggered if error occurred as the result of any messenger API methods call

                              - (void)messenger:(VIMessenger *)messenger didReceiveError:(VIErrorEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIErrorEvent object with error details and service information

                              –  messenger:didSetStatus:  required

                              Triggered after user presence state has been changed.

                              - (void)messenger:(VIMessenger *)messenger didSetStatus:(VIUserStatusEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIUserStatusEvent object with user status data and service information

                              –  messenger:didCreateConversation:  required

                              Triggered when conversation is created as the result of [VIMessenger createConversation:moderators:title:distinct:enablePublicJoin:customData:] method call

                              - (void)messenger:(VIMessenger *)messenger didCreateConversation:(VIConversationEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIConversationEvent object with conversation data and service information

                              –  messenger:didEditConversation:  required

                              Triggered when conversation properties were modified.

                              - (void)messenger:(VIMessenger *)messenger didEditConversation:(VIConversationEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIConversationEvent object with conversation data and service information

                              –  messenger:didRemoveConversation:  required

                              Triggered when conversation was removed as the result of [VIMessenger removeConversation:] method call.

                              - (void)messenger:(VIMessenger *)messenger didRemoveConversation:(VIConversationEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIConversationEvent object with conversation data and service info

                              –  messenger:didGetConversation:  required

                              Triggered when conversation description is received as the result of [VIMessenger getConversation:] method call.

                              - (void)messenger:(VIMessenger *)messenger didGetConversation:(VIConversationEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIConversationEvent object with conversation data and service info

                              –  messenger:didSendMessage:  required

                              Triggered when new message is received as the result of [VIConversation sendMessage:payload:] called by any user.

                              - (void)messenger:(VIMessenger *)messenger didSendMessage:(VIMessageEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIMessageEvent object with message data and service information

                              –  messenger:didEditMessage:  required

                              Triggered when message was edited.

                              - (void)messenger:(VIMessenger *)messenger didEditMessage:(VIMessageEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIMessageEvent object with message data and service information

                              –  messenger:didRemoveMessage:  required

                              Triggered when message was removed.

                              - (void)messenger:(VIMessenger *)messenger didRemoveMessage:(VIMessageEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIMessageEvent object with message data and service information

                              –  messenger:didReceiveTypingNotification:  required

                              Triggered when information that some user is typing something is received as the result of [VIConversation typing] called by any user.

                              - (void)messenger:(VIMessenger *)messenger didReceiveTypingNotification:(VIConversationServiceEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIConversationServiceEvent object with conversation UUID and service information

                              –  messenger:didReceiveReadConfirmation:  required

                              Triggered after another device with same logged in user called the [VIConversation markAsRead:] method.

                              - (void)messenger:(VIMessenger *)messenger didReceiveReadConfirmation:(VIConversationServiceEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIConversationServiceEvent object with conversation UUID and service information

                              –  messenger:didReceiveDeliveryConfirmation:  required

                              Triggered after another device with same logged in user called [VIConversation markAsDelivered:] method.

                              - (void)messenger:(VIMessenger *)messenger didReceiveDeliveryConfirmation:(VIConversationServiceEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIConversationServiceEvent object with conversation UUID and service information

                              –  messenger:didRetransmitEvents:  required

                              Triggered as the result of [VIConversation retransmitEventsFrom:to:] method call on some conversation for this SDK instance

                              - (void)messenger:(VIMessenger *)messenger didRetransmitEvents:(VIRetransmitEvent *)event
                              Parameters
                              messenger

                              VIMessenger instance

                              event

                              VIRetransmitEvent object with retransmitted events and service information

                              VIVideoPreprocessDelegate

                              Members
                              –  preprocessVideoFrame:rotation:

                              Triggered when new video frame is available for preprocessing.

                              - (void)preprocessVideoFrame:(CVPixelBufferRef)pixelBuffer rotation:(VIRotation)rotation
                              Parameters
                              pixelBuffer

                              Video frame

                              rotation

                              VIRotation video frame rotation

                              VIVideoRenderer

                              Members
                              –  didStart

                              Triggered when the video renderer is started

                              - (void)didStart
                              –  didStop

                              Triggered when the video renderer is stopped

                              - (void)didStop

                              VoxImplantDelegate

                              Warning: Deprecated. Use VICallDelegate, VIClientSessionDelegate and VIClientCallManagerDelegate. Please see details in each particular method.

                              Members
                              Connection Events
                              –  onConnectionSuccessful

                              Connection with VoxImplant cloud established

                              Warning: Deprecated. Use [VIClientSessionDelegate clientSessionDidConnect:] instead.

                              - (void)onConnectionSuccessful
                              –  onConnectionClosed

                              Connection with cloud closed

                              - (void)onConnectionClosed
                              –  onConnectionFailedWithError:

                              Connection with cloud failed

                              - (void)onConnectionFailedWithError:(NSString *)reason
                              Parameters
                              reason

                              Error message

                              Login Events
                              –  onLoginSuccessfulWithDisplayName:andAuthParams:

                              Triggered if login attempt was successful

                              - (void)onLoginSuccessfulWithDisplayName:(NSString *)displayName andAuthParams:(NSDictionary *)authParams
                              Parameters
                              displayName

                              Full name of logged in user

                              authParams

                              Auth params

                               //Example auth params:
                               {"accessExpire" : seconds_to_expire ,
                               "accessToken" : "accessToken_abcdef..." ,
                               "refreshExpire" : refresh_to_expire ,
                               "refreshToken" : "refreshToken_abcdef..." }
                              
                              –  onLoginFailedWithErrorCode:

                              Triggered if login attempt failed

                              - (void)onLoginFailedWithErrorCode:(NSNumber *)errorCode
                              Parameters
                              errorCode

                              Numeric error code

                              –  onOneTimeKeyGenerated:

                              Returns one time key generated by the login server as a result of requestOneTimeLoginKey.

                              Warning: Deprecated. Use completion handler in [VIClient requestOneTimeKeyWithUser:result:] instead.

                              - (void)onOneTimeKeyGenerated:(NSString *)key
                              Parameters
                              key

                              One time key

                              –  onRefreshTokenFailed:

                              Triggered when refresh of login tokens failed

                              Warning: Deprecated. Use completion handler in [VIClient requestOneTimeKeyWithUser:result:] instead.

                              - (void)onRefreshTokenFailed:(NSNumber *)errorCode
                              Parameters
                              errorCode

                              Error code

                              –  onRefreshTokenSuccess:

                              Triggered when refresh of login tokens finished successfully

                              Warning: Deprecated. Use completion handler in [VIClient requestOneTimeKeyWithUser:result:] instead.

                              - (void)onRefreshTokenSuccess:(NSDictionary *)authParams
                              Parameters
                              authParams

                              Auth params

                              Incoming Call Event
                              –  onIncomingCall:caller:named:withVideo:withHeaders:
                              - (void)onIncomingCall:(NSString *)callId caller:(NSString *)from named:(NSString *)displayName withVideo:(bool)videoCall withHeaders:(NSDictionary *)headers
                              Parameters
                              callId

                              Id of call

                              from

                              SIP URI of caller

                              displayName

                              Displayed name of caller

                              videoCall

                              Incoming video call flag

                              headers

                              Optional headers passed with event

                              Call Events
                              –  onCallConnected:withHeaders:

                              Call established

                              Warning: Deprecated. Use [VICallDelegate call:didConnectWithHeaders:] instead.

                              - (void)onCallConnected:(NSString *)callId withHeaders:(NSDictionary *)headers
                              Parameters
                              callId

                              id of call

                              headers

                              Optional headers passed with event

                              –  onCallDisconnected:withHeaders:

                              Call terminated

                              - (void)onCallDisconnected:(NSString *)callId withHeaders:(NSDictionary *)headers
                              Parameters
                              callId

                              id of call

                              headers

                              Optional headers passed with event

                              –  onCallRinging:withHeaders:

                              Call ringing. You should start playing call progress tone now

                              Warning: Deprecated. Use [VICallDelegate call:startRingingWithHeaders:] instead.

                              - (void)onCallRinging:(NSString *)callId withHeaders:(NSDictionary *)headers
                              Parameters
                              callId

                              id of call

                              headers

                              Optional headers passed with event

                              –  onCallFailed:withCode:andReason:withHeaders:

                              Call failed

                              Warning: Deprecated. Use [VICallDelegate call:didFailWithError:headers:] instead.

                              - (void)onCallFailed:(NSString *)callId withCode:(int)code andReason:(NSString *)reason withHeaders:(NSDictionary *)headers
                              Parameters
                              callId

                              Id of call

                              code

                              Status code

                              reason

                              Status message

                              headers

                              Optional headers passed with event

                              –  onCallAudioStarted:

                              Call audio started. You should stop playing progress tone when event is received

                              Warning: Deprecated. Use [VICallDelegate callDidStartAudio:] instead.

                              - (void)onCallAudioStarted:(NSString *)callId
                              Parameters
                              callId

                              Id of call

                              –  onSIPInfoReceivedInCall:withType:andContent:withHeaders:

                              Info received inside a call

                              Warning: Deprecated. Use [VICallDelegate call:didReceiveInfo:type:headers:] instead.

                              - (void)onSIPInfoReceivedInCall:(NSString *)callId withType:(NSString *)type andContent:(NSString *)content withHeaders:(NSDictionary *)headers
                              Parameters
                              callId

                              Id of call

                              type

                              MIME type of info

                              content

                              Body of info message

                              headers

                              Optional headers passed with event

                              –  onMessageReceivedInCall:withText:withHeaders:

                              Instant message received inside a call

                              Warning: Deprecated. Use [VICallDelegate call:didReceiveMessage:headers:] instead.

                              - (void)onMessageReceivedInCall:(NSString *)callId withText:(NSString *)text withHeaders:(NSDictionary *)headers
                              Parameters
                              callId

                              Id of call

                              text

                              Message text

                              headers

                              Optional headers passed with event

                              –  onNetStatsReceivedInCall:withStats:

                              Event dispatched when packet loss data received from VoxImplant servers

                              Warning: Deprecated. Use [VICallDelegate call:didReceiveStatistics:] instead.

                              - (void)onNetStatsReceivedInCall:(NSString *)callId withStats:(const struct VoxImplantNetworkInfo *)stats
                              Parameters
                              callId

                              Id of call

                              stats

                              VoxImplantNetworkInfo

                              –  onPreprocessCameraCapturedVideo:rotation:

                              Triggered when new video frame is available for preprocessing.

                              - (void)onPreprocessCameraCapturedVideo:(CVPixelBufferRef)pixelBuffer rotation:(int)rotation
                              Parameters
                              pixelBuffer

                              Video frame pixel buffer

                              rotation

                              Video rotation