Once authenticated, users can send or receive messages, which are tied to a Conversation.
A Conversation is created by calling:
stringeeclient.createConversation(participants, options, new CallbackListener<Conversation>() {
@Override
public void onSuccess(final Conversation conv) {
}
@Override
public void onError(final StringeeError error) {
}
});
In which:
participants: A list of participants:
List<User> participants;
options: Conversation options to use when constructing the conversation:
ConversationOptions options;
CallbackListener: The result callback.
To create a Chat 1-1 Conversation, you must pass participants with only one user and options as below:
ConversationOptions options = new ConversationOptions();
options.setName(conversation's name);
options.setGroup(false);
options.setDistinct(true);
A Chat 1-1 Conversation is a distinct Conversation by default. You can not add participants to a Chat 1-1 Conversation.
If you pass participants with more than one user, the Conversation is created as a Group Chat Conversation.
To create a Group Chat Conversation, you pass options as:
ConversationOptions options = new ConversationOptions();
options.setGroup(true);
You can add or remove participants to/from a Group Chat Conversation.
If a Conversation is created as a distinct Conversation, it is unique on the Stringee server. This means that if multiple users independently create distinct Conversations with the same set of users, the server will automatically merge the conversations. Once a Distinct Conversation has been created between User A and User B, any further attempts by either of these users to create a new Distinct Conversation with these participants will be resolved into the existing Conversation. Conversations are created as non-distinct Conversations by default. Creating a distinct Conversation by set isDistinct option:
Conversations are stored on the Stringee server and cached on the local database as well. You can get conversations as follows:
Get local conversations by calling:
stringeeClient.getLocalConversations(userId, new CallbackListener<List<Conversation>>() {
@Override
public void onSuccess(final List<Conversation> conversations) {
}
});
In which:
Get the latest conversations from the Stringee server by calling:
stringeeClient.getLastConversations(count, new CallbackListener<List<Conversation>>() {
@Override
public void onSuccess(final List<Conversation> conversations) {
}
});
In which:
Get a list of conversations of which updated time is greater than the datetime from the server by calling:
stringeeClient.getConversationsAfter(datetime, count, new CallbackListener<List<Conversation>>() {
@Override
public void onSuccess(final List<Conversation> conversations) {
}
});
In which:
Get a list of conversations of which updated time is smaller than the datetime from the server by calling:
stringeeClient.getConversationsBefore(datetime, count, new CallbackListener<List<Conversation>>() {
@Override
public void onSuccess(final List<Conversation> conversations) {
}
});
In which:
Any participant can add other users into a Conversation or leave a Conversation. Only the participant who created the Conversation can remove other participants from the Conversation:
// Add
conversation.addParticipants(stringeeClient, participants, new CallbackListener<List<User>>() {
@Override
public void onSuccess(List<User> users) {
// return added users here
}
@Override
public void onError(StringeeError error) {
}
});
// Remove
conversation.removeParticipants(stringeeClient, participants, new CallbackListener<List<User>>() {
@Override
public void onSuccess(List<User> users) {
// return removed users here
}
@Override
public void onError(StringeeError error) {
}
});
To leave a Conversation, you remove yourself from the Conversation.
If the Conversation is Chat 1-1, you can delete the Conversation by calling:
conversation.delete(stringeeClient, new StatusListener() {
@Override
public void onSuccess() {
}
@Override
public void onError(StringeeError error) {
}
});
If the Conversation is Group Chat, you must leave the Conversation before deleting it.