SIGN UP

VIMessenger

Interface that may be used to control messaging functions.

Methods

addDelegate:

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

Add delegate to handle messenger events.

Parameters

createConversation:completion:

- (void)createConversation:(VIConversationConfig *)conversationConfig
                completion:(nullable VIMessengerCompletion<VIConversationEvent *> *)completion

Create a new conversation with the extended configuration.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIConversationEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didCreateConversation:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Other parties of the conversation (online participants and logged in clients) can be informed about the conversation creation via the [VIMessengerDelegate messenger:didCreateConversation:] event.

Parameters

editUserWithCustomData:privateCustomData:completion:

- (void)editUserWithCustomData:(nullable NSDictionary *)customData
             privateCustomData:(nullable NSDictionary *)privateCustomData
                    completion:(nullable VIMessengerCompletion<VIUserEvent *> *)completion

Edit current user information.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIUserEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didEditUser:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Other users that are subscribed to the user can be informed about the editing via the [VIMessengerDelegate messenger:didEditUser:] event.

Parameters

  • customData:

    nullable NSDictionary *

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

  • privateCustomData:

    nullable NSDictionary *

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

  • completion:

    nullable VIMessengerCompletion<VIUserEvent *> *

    Completion handler to get the result or nil

getConversation:completion:

- (void)getConversation:(NSString *)uuid
             completion:(nullable VIMessengerCompletion<VIConversationEvent *> *)completion

Get a conversation by its UUID.

It's possible if:

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIConversationEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didGetConversation:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Only the client that called the method can be informed about getting conversation.

Parameters

getConversations:completion:

- (void)getConversations:(NSArray<NSString *> *)uuids
              completion:(nullable VIMessengerCompletion<NSArray<VIConversationEvent *> *> *)completion

Get the multiple conversations by the array of UUIDs. Maximum 30 conversations.

It's possible if:

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIConversationEvent or VIErrorEvent in case of success/error accordingly. The result will be an array with as many conversations events as the specified number of conversations UUIDs is.
  2. Implement the [VIMessengerDelegate messenger:didGetConversation:] and [VIMessengerDelegate messenger:didReceiveError:] events. The event with a result will be invoked as many times as the specified number of conversations UUIDs is; the error event will be called once only.

Only the client that called the method can be informed about getting conversations.

Parameters

  • uuids:

    NSArray<NSString *> *

    Array of conversation UUIDs. Maximum 30 conversations.

  • completion:

    nullable VIMessengerCompletion<NSArray<VIConversationEvent *> *> *

    Completion handler to get the result or nil

getPublicConversations:

- (void)getPublicConversations:(nullable VIMessengerCompletion<VIConversationListEvent *> *)completion

Get all public conversations ([VIConversation publicJoin] is YES).

It's possible to get all public conversations (UUIDs) that were created by:

  • the current user
  • other users of the same child account
  • users of the main Voximplant developer account

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIConversationListEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didGetPublicConversations:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Only the client that called the method can be informed about getting public conversations UUIDs.

Parameters

getSubscriptionList:

- (void)getSubscriptionList:(nullable VIMessengerCompletion<VISubscriptionEvent *> *)completion

Get all current subscriptions, i.e., the array of users the current user is subscribed to.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VISubscriptionEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didGetSubscriptionList:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Only the client that called the method can be informed about getting subscriptions.

Parameters

getUserByIMId:completion:

- (void)getUserByIMId:(NSNumber *)imId
           completion:(nullable VIMessengerCompletion<VIUserEvent *> *)completion

Get information for the user specified by the IM user id.

It's possible to get any user of the main Voximplant developer account or its child accounts.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIUserEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didGetUser:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Only the client that called the method can be informed about getting user information.

Parameters

getUserByName:completion:

- (void)getUserByName:(NSString *)username
           completion:(nullable VIMessengerCompletion<VIUserEvent *> *)completion

Get information for the user specified by the Voximplant user name, e.g., 'username@appname.accname'.

It's possible to get any user of the main Voximplant developer account or its child accounts.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIUserEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didGetUser:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Only the client that called the method can be informed about getting user information.

Parameters

getUsersByIMId:completion:

- (void)getUsersByIMId:(NSArray<NSNumber *> *)imIds
            completion:(nullable VIMessengerCompletion<NSArray<VIUserEvent *> *> *)completion

Get information for the users specified by the array of the IM user ids. Maximum 50 users.

It's possible to get any users of the main Voximplant developer account or its child accounts.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIUserEvent or VIErrorEvent in case of success/error accordingly. The result will be an array with as many user events as the specified number of IM user IDs is.
  2. Implement the [VIMessengerDelegate messenger:didGetUser:] and [VIMessengerDelegate messenger:didReceiveError:] events. The event with a result will be invoked as many times as the specified number of IM user ids is; the error event will be called once only.

Only the client that called the method can be informed about getting users information.

Parameters

  • imIds:

    NSArray<NSNumber *> *

    Array of IM user ids

  • completion:

    nullable VIMessengerCompletion<NSArray<VIUserEvent *> *> *

    Completion handler to get the result or nil

getUsersByName:completion:

- (void)getUsersByName:(NSArray<NSString *> *)users
            completion:(nullable VIMessengerCompletion<NSArray<VIUserEvent *> *> *)completion

Get information for the users specified by the array of the Voximplant user names. Maximum 50 users.

It's possible to get any users of the main Voximplant developer account or its child accounts.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIUserEvent or VIErrorEvent in case of success/error accordingly. The result will be an array with as many user events as the specified number of user names is.
  2. Implement the [VIMessengerDelegate messenger:didGetUser:] and [VIMessengerDelegate messenger:didReceiveError:] events. The event with a result will be invoked as many times as the specified number of user names is; the error event will be called once only.

Only the client that called the method can be informed about getting users information.

Parameters

  • users:

    NSArray<NSString *> *

    Array of Voximplant user identifiers, e.g., 'username@appname.accname'

  • completion:

    nullable VIMessengerCompletion<NSArray<VIUserEvent *> *> *

    Completion handler to get the result or nil

joinConversation:completion:

- (void)joinConversation:(NSString *)uuid
              completion:(nullable VIMessengerCompletion<VIConversationEvent *> *)completion

Join the current user to any conversation specified by the UUID.

It's possible only on the following conditions:

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIConversationEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didEditConversation:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Other parties of the conversation (online participants and logged in clients) can be informed about joining to the conversation via the [VIMessengerDelegate messenger:didEditConversation:] event.

Parameters

leaveConversation:completion:

- (void)leaveConversation:(NSString *)uuid
               completion:(nullable VIMessengerCompletion<VIConversationEvent *> *)completion

Make the current user to leave a conversation specified by the UUID.

It's possible only if the conversation is not a direct one ([VIConversation direct] is NO)

After a successful method call the conversation's UUID will be added to [VIUser leaveConversationList].

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIConversationEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didEditConversation:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Other parties of the conversation (online participants and logged in clients) can be informed about leaving the conversation via the [VIMessengerDelegate messenger:didEditConversation:] event.

Parameters

managePushNotifications:completion:

- (void)managePushNotifications:(nullable NSArray<VIMessengerNotification> *)notifications
                     completion:(nullable VIMessengerCompletion<VIUserEvent *> *)completion

Manage messenger push notification subscriptions for the current user.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIUserEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didEditUser:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Other logged in clients (of the current user) can be informed about managing push notifications via [VIMessengerDelegate messenger:didEditUser:].

Parameters

recreateConversation:uuid:lastSequence:lastUpdateTime:createdTime:

- (VIConversation *)recreateConversation:(VIConversationConfig *)config
                                    uuid:(NSString *)uuid
                            lastSequence:(SInt64)lastSequence
                          lastUpdateTime:(NSTimeInterval)lastUpdateTime
                             createdTime:(NSTimeInterval)createdTime

Recreate a conversation.

Note that this method does not create a conversation, but restore a previously created conversation from a local storage (database).

Parameters

  • Conversation config

  • uuid:

    NSString *

    Conversation UUID

  • lastSequence:

    SInt64

    Sequence of the last event stored in a local storage (database)

  • lastUpdateTime:

    NSTimeInterval

    UNIX timestamp that specifies the time of the last event stored in a local storage (database)

  • createdTime:

    NSTimeInterval

    UNIX timestamp that specifies the time of the conversation creation

Returns

recreateMessage:conversation:text:payload:sequence:

- (VIMessage *)recreateMessage:(NSString *)uuid
                  conversation:(NSString *)conversationUUID
                          text:(nullable NSString *)text
                       payload:(nullable NSArray<NSDictionary<NSString *,NSObject *> *> *)payload
                      sequence:(SInt64)sequence

Recreate a message.

Note that this method does not create a message, but restore a previously created message from a local storage (database).

Parameters

  • uuid:

    NSString *

    Universally unique identifier of message

  • conversationUUID:

    NSString *

    UUID of the conversation this message belongs to

  • text:

    nullable NSString *

    Text of this message

  • payload:

    nullable NSArray<NSDictionary<NSString *,NSObject *> *> *

    Array of payload objects associated with the message

  • sequence:

    SInt64

    Message sequence number

Returns

  • Return:

    VIMessage *

    VIMessage object, or nil if uuid or conversationUUID is nil or empty string

removeDelegate:

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

Remove a previously added delegate.

Parameters

setStatus:completion:

- (void)setStatus:(BOOL)online
       completion:(nullable VIMessengerCompletion<VIStatusEvent *> *)completion

Set the current user status.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VIStatusEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didSetStatus:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Other users (that are subscribed to the user) and other clients (of the current user) can be informed about the status changing via the [VIMessengerDelegate messenger:didSetStatus:] event.

Parameters

subscribe:completion:

- (void)subscribe:(NSArray<NSNumber *> *)users
       completion:(nullable VIMessengerCompletion<VISubscriptionEvent *> *)completion

Subscribe for other user(s) information and status changes.

It's possible to subscribe for any user of the main Voximplant developer account or its child accounts.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VISubscriptionEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didSubscribe:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Other logged in clients (of the current user) can be informed about the subscription via the [VIMessengerDelegate messenger:didSubscribe:] event. User(s) specified in the 'users' parameter aren't informed about the subscription.

Parameters

unsubscribe:completion:

- (void)unsubscribe:(NSArray<NSNumber *> *)users
         completion:(nullable VIMessengerCompletion<VISubscriptionEvent *> *)completion

Unsubscribe from other user(s) information and status changes.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VISubscriptionEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didUnsubscribe:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Other logged in clients (of the current user) can be informed about the unsubscription via the [VIMessengerDelegate messenger:didUnsubscribe:] event. User(s) specified in the 'users' parameter aren't informed about the unsubscription.

Parameters

unsubscribeFromAll:

- (void)unsubscribeFromAll:(nullable VIMessengerCompletion<VISubscriptionEvent *> *)completion

Unsubscribe from all subscriptions.

To get the method call result use one of the following options:

  1. Specify the completion parameter to consume the results with VISubscriptionEvent or VIErrorEvent in case of success/error accordingly.
  2. Implement the [VIMessengerDelegate messenger:didUnsubscribe:] and [VIMessengerDelegate messenger:didReceiveError:] events.

Other logged in clients (of the current user) can be informed about the unsubscription via the [VIMessengerDelegate messenger:didUnsubscribe:] event. Other users aren't informed about the unsubscription.

Parameters

Properties

me

@property (nonatomic, strong, readonly, nullable) NSString *me

An Voximplant user identifier for the current user (e.g., 'username@appname.accname'), or nil if the client is not logged in.