- Fixed an issue where the okhttp library throws an
IllegalArgumentException: port out of range:-1error and causes a crash.
- Fixed unread message count to be updated when an unread message is deleted
- Improved stability
- Fixed an
IllegalArgumentExceptionfrom serializing theFileMessage.fileMessageParamswhen it contained an additional property that the SDK is not aware of
- Improved stability
- Added MessageSearchQuery's totalCount and made it public (MessageSearchQuery.getTotalCount())
- Implemented channel membership history where clients can retrieve whether users have joined or left the channel (
MemberState.LEFTfor left members of aGroupChannel) - Fixed a bug where
onSessionTokenRequired()is not called immediately after session expires
- Improved thread management to reduce total thread count
- Improved memory management related to network I/O to reduce memory usage
- Changed way to detect internet availabilty when uploading a file
- Return error when empty or null value is passed on as APP_ID in
SendBird.init() - Fixed a bug where when reconnected, an updated message gets removed and added again in
MessageCollection
- Improved stability.
- Improved stability.
- Fill
BaseMessage.mentionedUserspayload in pending messages if it was set byBaseMessageParams.setMentionedUsers().
- Added
HiddenChannelFilter.ALL. - Fixed bug where nicknameContainsFilter is filtered incorrectly in regards to case sensitivity.
- Fix a bug where an auto-resendable messages could've been sent multiple times.
- Fix a bug where an auto-resendable messages could've been sent multiple times.
- Improved stability.
- Fixed NPE in
AbstractPushHandlers.isUniquePushToken(). - Fixed bugs.
- Channel not being removed from the
GroupChannelCollectionwhen a user leaves a public group channel. - Channel's metadata related events not being delivered to
MessageCollectionHandler.onChannelUpdated(). - Message events not being fired when sending a new message right after creating a new
MessageCollectioninstance.
- Channel not being removed from the
- Added
SendBird.getTotalUnreadChannelCount(GroupChannelTotalUnreadChannelCountParams, GroupChannel.GroupChannelTotalUnreadChannelCountHandler).
- Fixed a bug where
ACK_TIMEOUT(800180)errors were incorrectly being sent. - Fixed a bug in MessageCollection where pending messages could remain in a pending state after being sent.
- Fixed a bug in
baseChannel.sendUserMessage()andbaseChannel.sendFileMessage(), where the callback could've been called twice when the message failed to be sent.
- Fixed a bug in GroupChannelCollection that caused crashes when channels are loaded after the collection is disposed.
- Deprecated
ConnectionManager.
- Added static method to create
Queryinstances.static PreviousMessageListQuery.create(channelType, channelUrl)static OperatorListQuery.create(channelType, channelUrl)static PollListQuery.create(channelUrl)static PollVoterListQuery.create(pollId, pollOptionId, channelUrl)static BannedUserListQuery.create(channelType, channelUrl)static GroupChannelMemberListQuery.create(channelUrl)static ParticipantListQuery.create(channelUrl)static MutedUserListQuery.create(channelType, channelUrl)
- Added
applyParentMessage(BaseMessage)inBaseMessageto allow a child (reply) message to update a parent message object when updated. - Fixed a bug that could cause an ANR (Application Not Responding) in
SendBird.connect().
- Fixed an issue that channels created in the background do not properly load from GroupChannelCollection.
- Fixed channel’s metadata not being cached in database which causes
BaseChannel.getCachedMetaData()returning an empty Map.
- Fixed
NoSuchFieldExceptionon deserializing a BaseMessage object when proguard is enabled. - Fixed bugs related to updating a message.
BaseMessage.messagebeing reset if UserMessageParams.message is not set explicitly.BaseMessage.requestIdgetting parsed with wrong key.
- Improved stability.
-
Deprecated as this version would cause
NoSuchFieldExceptionfromBaseMessage.buildFromSerialzedData()if ProGuard was enabled. -
Local caching support. See Local Caching for details.
- Added
MessageCollection. - Added
MessageCollectionHandler. - Added
MessageContext. - Added
MessageCollectionInitPolicy. - Added
GroupChannelCollection. - Added
GroupChannelCollectionHandler. - Added
GroupChannelContext. - Added
CollectionEventSource. - Deprecated
SendBird.init(String, Context).- Replaced by
SendBird.init(String, Context, boolean, InitResultHandler).
- Replaced by
- Deprecated
SendBird.initFromForeground(String, Context).- Replaced by
SendBird.initFromForeground(String, Context, boolean, InitResultHandler).
- Replaced by
- Added SendBird.clearCachedData(Context, CompletionHandler).
- Added SendBird.clearCachedMessages(String, CompletionHandler).
- Added SendBird.getCachedDataSize(Context).
- Added
-
Added Reply to Channel feature.
- Added
ReplyTypeFilterfor loading messages with respect to message's reply messages.- Added
setReplyTypeFilterandgetReplyTypeFilterinMessageListParams,MessageChangeLogsParamsandPreviousMessageListQuery. - Deprecated
setIncludeRepliesandshouldIncludeRepliesinMessageListParams,MessageChangeLogsParamsandPreviousMessageListQuery.
- Added
- Deprecated
setIncludeParentMessageTextandshouldIncludeParentMessageTextinMessageListParams,MessageChangeLogsParamsandPreviousMessageListQuery.- Replaced by
setMessagePayloadFilterwithMessagePayloadFilter.setIncludeParentMessageInfo()set.
- Replaced by
- Added
isReplyToChannelinBaseMessage. - Added
setReplyToChannelinBaseMessageParams. - Added
getParentMessageinBaseMessage.
- Added
- Added
RestrictionInfowhich contains information for users who are either muted or banned. - Added
RestrictionUserfor muted or banned users, which containsRestrictionInfo.MutedUserListQuery.next()andBannedUserListQuery.next()will give a list ofRestrictedUserobjects.ChannelHandler.onUserMuted()andChannelHandler.onUserBanned()will give aRestrictedUserobject.
- Added
getRestrictionInfo()inMember.
- Added
markAsRead(SendBird.MarkAsReadHandler)and deprecatedmarkAsRead()inGroupChannel.
- Added
setMetaDataValuesFilter(String, List<String>),setMetaDataValueStartsWithFilter(String, String)inGroupChannelListQueryandPublicGroupChannelListQuery. - Added
MessagePayloadFilterwhich contains filters regarding message payload used in loading messages. Affected classes includes:MessageListParamsThreadMessageListParamsMessageRetrievalParamsMessageChangeLogsParamsPreviousMessageListQuery
- Fixed an occasional NPE bug while parsing
BaseMessageobject.
- Deprecated following methods and these will be removed on new release after December 31, 2021. Refer to
DEPRECATED.mdfor replacement details.getNextMessagesByTimestamp(long, boolean, int, boolean, MessageTypeFilter, String, GetMessagesHandler)getNextMessagesByTimestamp(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, GetMessagesHandler)getNextMessagesByTimestamp(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, boolean, GetMessagesHandler)getNextMessagesByTimestamp(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, boolean, boolean, GetMessagesHandler)getPreviousMessagesByTimestamp(long, boolean, int, boolean, MessageTypeFilter, String, GetMessagesHandler)getPreviousMessagesByTimestamp(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, GetMessagesHandler)getPreviousMessagesByTimestamp(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, boolean, GetMessagesHandler)getPreviousMessagesByTimestamp(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, boolean, boolean, GetMessagesHandler)getPreviousAndNextMessagesByTimestamp(long, int, int, boolean, MessageTypeFilter, String, GetMessagesHandler)getPreviousAndNextMessagesByTimestamp(long, int, int, boolean, MessageTypeFilter, String, List<String>, GetMessagesHandler)getPreviousAndNextMessagesByTimestamp(long, int, int, boolean, MessageTypeFilter, String, List<String>, boolean, GetMessagesHandler)getPreviousAndNextMessagesByTimestamp(long, int, int, boolean, MessageTypeFilter, String, List<String>, boolean, boolean, GetMessagesHandler)getNextMessagesById(long, boolean, int, boolean, MessageTypeFilter, String, GetMessagesHandler)getNextMessagesById(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, GetMessagesHandler)getNextMessagesById(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, boolean, GetMessagesHandler)getNextMessagesById(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, boolean, boolean, GetMessagesHandler)getPreviousMessagesById(long, boolean, int, boolean, MessageTypeFilter, String, GetMessagesHandler)getPreviousMessagesById(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, GetMessagesHandler)getPreviousMessagesById(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, boolean, GetMessagesHandler)getPreviousMessagesById(long, boolean, int, boolean, MessageTypeFilter, String, List<String>, boolean, boolean, GetMessagesHandler)getPreviousAndNextMessagesById(long, int, int, boolean, MessageTypeFilter, String, GetMessagesHandler)getPreviousAndNextMessagesById(long, int, int, boolean, MessageTypeFilter, String, List<String>, GetMessagesHandler)getPreviousAndNextMessagesById(long, int, int, boolean, MessageTypeFilter, String, List<String>, boolean, GetMessagesHandler)getPreviousAndNextMessagesById(long, int, int, boolean, MessageTypeFilter, String, List<String>, boolean, boolean, GetMessagesHandler)getMessageChangeLogsByToken(String, GetMessageChangeLogsByTokenHandler)getMessageChangeLogsByToken(String, boolean, GetMessageChangeLogsByTokenHandler)getMessageChangeLogsByToken(String, boolean, boolean, GetMessageChangeLogsByTokenHandler)getMessageChangeLogsByTimestamp(long, GetMessageChangeLogsHandler)getMessageChangeLogsByTimestamp(long, boolean, GetMessageChangeLogsHandler)getMessageChangeLogsByTimestamp(long, boolean, boolean, GetMessageChangeLogsHandler)
- Optimized Supergroup protocol handling to improve performance for specific use cases
- Improved stability.
- Improved stability.
- Added support for Firebase Cloud Messaging version 22.0.0 in
SendBirdPushHandler. (for push notification with multi-device support)
- SDK now uses different strategy for creating thread when
SendBird.ThreadOption.NEW_THREADis enabled. This is done to save system resources. - Added
getJoinedAt()inGroupChannel
- Fixed strict mode violations.
- Added
setNicknameStartsWithFilter()inApplicationUserListQuery - Improved stability.
- Improved stability.
- Added
LogLevel#NONE. - Added
AppleCriticalAlertOptionsclass andgetAppleCriticalAlertOptionsandsetAppleCriticalAlertOptionsinBaseMessage,BaseMessageParams,FileMessageParams,UserMessageParams, andScheduledUserMessageParams. - From this version, it is not available on
jcenter. This version can only be available from Sendbird's maven repository:maven { url "https://repo.sendbird.com/public/maven" }. - From this version,
minSdkVersionis upgraded to16from14.
- Internal changes and refactoring to improve stability.
- This is the last release that will be available on
jcenter. From the next release, SDK binary will be available from Sendbird's maven repository:maven { url "https://repo.sendbird.com/public/maven" }.
- Added
alwaysReceiveMessage()inSendBirdPushHandlerandSendBirdHmsPushHandler. - When using multi-device support for push notification, by default, the SDK ignores push payload when the app is connected to the Sendbird (online). To always receive push payload regardless of the connection state, override this method and return
true. - Added
SendBird.ChannelHandler#onChannelMemberCountChangedandSendBird.ChannelHandler#onChannelParticipantCountChanged. - SDK now uses AndroidX libraries instead of support libraries. (with jetifier turned off)
- Deprecated
SendBirdError#ERR_ACCESS_TOKEN_NOT_VALID,SendBirdError#ERR_SESSION_TOKEN_EXPIRED. The two error codes had same value (400302) and will be replaced bySendBirdError#ERR_INVALID_TOKEN(400302). - Added
BaseChannel#getCachedMetaData. - Added a new constructor
MessageSearchQuery.Builder(MessageSearchQuery)inMessageSearchQuery.Builder.
- Fixed a bug which response(
PushTokenRegistrationStatus) forRegisterPushTokenWithStatusHandlercould be null.
- Changed the visibility scope of
AbstractPushHandlerfrompackage-privatetopublic. This change was made to support Kotlin clients.
- Fixed a bug where the SDK tried to coerce non-integer into integer regarding OGImage's width and height. If the height and width are not numbers, the fields will be set to 0.
- Improved stability.
- OOM related to
APITaskQueuehas been fixed. - Now we provide a wider scope of logs related to network communications.
LogLevel,SendBird#setLoggerLevel(LogLevel)are added. The default log level isWarn. - File size check logic for sending a file message has been added to the SDK.
- Deprecated
addOperator(User),addOperators(List<User>),addOperatorId(String),addOperatorIds(List<String>)inOpenChannelParams. - Added
setOperators(List<User>),setOperatorIds(List<String>)inOpenChannelParams. - Improved stability.
GroupChannel#setPushPreference(boolean, GroupChannelSetPushPreferenceHandler)is now deprecated. Please useGroupChannel#setMyPushTriggerOption(PushTriggerOption, GroupChannelSetMyPushTriggerOptionHandler)instead.- Improved stability.
- Added
createChannel()withOpenChannelParamsinOpenChannel. - Added
updateChannel()withOpenChannelParamsinOpenChannel. - Added
OpenChannelParams. - Changes in
BaseChannel.sendFileMessage().- When sending a file message with a
Fileobject, SDK will calculate the file size internally. (fileSizeparameter will be overridden by our calculation result).
- When sending a file message with a
- Improved stability.
- Added
MessageListParams#setShowSubchannelMessagesOnlyandMessageListParams#shouldShowSubchannelMessagesOnly. - Added
PreviousMessageListQuery#setShowSubchannelMessagesOnlyandPreviousMessageListQuery#shouldShowSubchannelMessagesOnly
GroupChannelListQuery#getCustomTypesFilternow returns a copy of the filter list instead of directly returning the reference.- Improved stability.
- Modified
BaseMessage#buildFromSerializedData(byte[], SendingStatus)
- Added
BaseMessage#buildFromSerializedData(byte[], SendingStatus)
- Added
GroupChannel.getTypingUsers()inGroupChannelto retrieve the typing user list in current channel. - Deprecated
getTypingMembers()inGroupChannel. - Improved stability.
- Improved stability.
- Stabilize socket connection
- Added
getCreator()inGroupChannelto retrieve the creator of the channel. - Improved stability.
- Activated -
OperatorFilterinGroupChannelMemberListQuery - Added
setWebSocketResponseTimeout()inSendBird.Optionsto manually set timeout value.
- Added -
GroupChannelMemberListQuery#Order,GroupChannelMemberListQuery#setOrderfor the member list query. - Added -
isMutedproperty inMemberclass - Added -
getAttributesInUseinAppInfoclass - Modified TLS 1.3 support implementation to support dynamic delivery. (removed
SendBirdInitProvider)
- Added open graph feature along with OGMetaData and OGImage class.
- Added ogMetaData property in BaseMessage.
- Improved stability.
- Fixed bug on userId not being set in certain cases for pending/failed messages.
- Improved stability.
- Added
addOperators(Collection<String>, AddOperatorsHandler),removeOperators(Collection<String>, RemoveOperatorsHandler),removeAllOperators(RemoveAllOperatorsHandler)methods inBaseChannel. - Improved stability.
- Added
from()method inGroupChannelChangeLogsParamsto createGroupChannelChangeLogsParamsfromGroupChannelListQuery. - Added
from()method inMessageChangeLogsParamsto createMessageChangeLogsParamsfromPreviousMessageListQuery,MessageListParamsandThreadMessageListParams. - Added
getUnreadMemberCountandgetUndeliveredMemberCountinGroupChannel. - Deprecated
getDeliveryReceiptandgetReadReceiptinGroupChannel. - Improved stability.
- Improved stability.
- Add consumerProguardFile for libraries used in SDK
- Improved stability.
- Fixed bugs on push notification not being received when app is killed. (Only for apps that use push notifications for multi-device users (Android only))
- Added
includeFrozenproperty inGroupChannelListQuery,PublicGroupChannelListQuery,OpenChannelListQueryandGroupChannelChangeLogsParams. - Added
GroupChannelChangeLogsParams. - Added
getMyGroupChannelChangeLogsByTokenWithParams(),getMyGroupChannelChangeLogsByTimestampWithParams()and deprecatedgetMyGroupChannelChangeLogsByToken(),getMyGroupChannelChangeLogsByTimestamp()
- Added
AppInfoclass (for UIKit) - Added emoji feature with
Emoji,EmojiCategory,EmojiContainerclass (for UIKit) - Improved stability.
- Added
setMetaArrays(List<MessageMetaArray>)inUserMessageParamsandFileMessageParams. - Deprecated
setMetaArrayKeys(List<String>)inUserMessageParamsandFileMessageParams. - Improved stability.
- Prevent crash issue on receiving custom push notification.
- Improved stability.
- Improved stability.
- Stabilize connection state.
- Improved stability.
- Improved stability.
- Added
getRole()inMemberto specify whether the member is an operator of the channel or not. - Added
onOperatorUpdated(BaseChannel channel)inChannelHandler. OpenChannel.getOperatorsnow returns the operator list as an unmodifiableList.- Improved stability.
- Improved stability.
- Added multi-device support for push notifications.
- Improved stability.
- Deprecated 3.0.119 as
BaseChannel.resendUserMessagecauses crash when used with SyncManager's autoResend feature. - Added version control over the final state of
reactions. - Changed the order of reactions.
- Removed a
ERR_REACTION_DUPLICATEDerror code - Added
SendingStatusinBaseMessage, and deprecatedRequestStateinUserMessage,FileMessage.NONE,PENDING,FAILED,SUCCEEDED,CANCELED.
- Improved stability.
resendUserMessage(),resendFileMessage()returns the corresponding messages withPENDINGstate.- Improved stability.
- Moved
getRequestId(),getMessage(),getSender()toBaseMessageto prevent type-casting. - Redefined
equals(),hashCode()methods. Following objects is affected by this.BaseMessage,UserMessage,FileMessage,AdminMessageUser,Memeber,Sender
- Improved stability.
- Improved stability.
- Supports Full-Text Message Search Feature
- Added
MessageSearchQueryto search messages. - Added builder class
MessageSearchQuery.Builderto buildMessageSearchQuery.
- Added
- Improved stability.
- Fixed minor bugs.
- Supports reactions in
BaseMessage- Added
ReactionandReactionEventclasses. - Added
addReaction(BaseMessage message, String key, ReactionHandler handler)inBaseChannel. - Added
deleteReaction(BaseMessage message, String key, ReactionHandler handler)inBaseChannel. - Added
includeReactionsparameter toget**MessagesById(),get**MessagesByTimestamp()inBaseChannel. - Added
includeReactionsparameter togetMessageChangeLogsByToken(),getMessageChangeLogsByTimestamp()inBaseChannel. - Added
onReactionUpdated(BaseChannel channel, ReactionEvent reactionEvent)inChannelHandler. - Added
getReactions()inBaseMessage. - Added
applyReactionEvent(ReactionEvent reactionEvent)inBaseMessage. - Added a
ERR_REACTION_DUPLICATEDerror code for the send reaction request which usually occurs a duplicate reaction.
- Added
- Added
markAsDelivered()inSendBird. - Added
markAsDelivered(),getDeliveryReceipt()inGroupChannel. - Added
onDeliveryReceiptUpdatedinChannelHandler. - Improved stability.
- Improved stability.
- Added
errorCodeandisResendable()inUserMessageandFileMessage.resendUserMessage()andresendFileMessage()work only whenisResendable()istrue.
- Supports push translation.
- Added
updateCurrentUserInfo(List<String> preferredLanguages, UserInfoUpdateHandler handler)in SendBird. - Added
getPreferredLanguages()in User.
- Added
- Improved stability.
- Added
getMessageOffsetTimestamp()in GroupChannel.
- SendBird Android SDK has been changed from Java Archive(
JAR) into Android Archive(AAR). - Supports TLS1.3.
- Improved stability.
- Added
report(ReportCategory reportCategory, String reportDescription, ReportHandler handler)in BaseChannel. - Added
reportUser(User offendingUser, ReportCategory reportCategory, String reportDescription, ReportUserHandler handler)in BaseChannel. - Added
reportMessage(BaseMessage message, ReportCategory reportCategory, String reportDescription, ReportMessageHandler handler)in BaseChannel. - Added
onTotalUnreadMessageCountChanged(int totalCount, Map<String, Integer> totalCountByCustomType)in UserEventHandler.
- Improved stability.
- Improved stability.
- Improved stability.
- Improved stability.
- Improved stability.
- Improved
MetaArrayinBaseMessage.MetaArrayorder passed as a parameter will be kept.- Added
MessageMetaArrayclass. - Added
getAllMetaArrays()andgetMetaArrays(Collection<String> metaArrayKeys)inBaseMessage. - Added
addMessageMetaArrayValues(BaseMessage message, List<MessageMetaArray> metaArrays, MessageMetaArrayHandler handler)andremoveMessageMetaArrayValues(BaseMessage message, List<MessageMetaArray> metaArrays, MessageMetaArrayHandler handler)inBaseChannel. - Deprecated
getAllMetaArray()andgetMetaArray(Collection<String> metaArrayKeys)inBaseMessage. - Deprecated
addMessageMetaArrayValues(BaseMessage message, Map<String, List<String>> metaArrayMap, MessageMetaArrayHandler handler)andremoveMessageMetaArrayValues(BaseMessage message, Map<String, List<String>> metaArrayMap, MessageMetaArrayHandler handler)inBaseChannel.
- Added
- Added
resendFileMessage(FileMessage fileMessage, File file, ResendFileMessageHandler handler)andresendFileMessage(FileMessage fileMessage, File file, ResendFileMessageWithProgressHandler handler)inBaseChannel. - Added
getRequestState()andenum RequestState { NONE, PENDING, FAILED, SUCCEEDED }inFileMessage. - Added
setStrict(boolean strict)inGroupChannelParams. If it is set to true, the channel creation will be failed if any of the users do not exist. - Added
translateUserMessage(UserMessage userMessage, List<String> targetLanguages, TranslateUserMessageHandler handler)inBaseChannel. - Added
getRequestedMentionUserIds()inUserMessageandFileMessage.
- Added
setThreadOption(ThreadOption threadOption, Handler handler)in SendBird.Option. - Deprecated
useUiThreadForCallbacks(boolean)andsetHandlerForCallbacks(Handler handler)in SendBird.Option. - Improved stability.
- Added
setHandlerForCallbacks(Handler handler)in SendBird.Options. - Improved stability.
- Added
getRequestState()andenum RequestState { NONE, PENDING, FAILED, SUCCEEDED }in UserMessage. - Added
resendUserMessage(UserMessage userMessage, ResendUserMessageHandler handler)in BaseChannel. - Added
getMyLastRead()in GroupChannel. - Added
createChannelWithOperatorUserIds(String name, String channelUrl, Object coverUrlOrImage, String data, String customType, List<String> operatorUserIds, OpenChannelCreateHandler handler)in OpenChannel.
- Added
delete(GroupChannelDeleteHandler handler)inGroupChannel.
- Added
isDiscoverableproperty toGroupChannelandGroupChannelParams.- if
isDiscoverableof a public group channel is set to false, then the channel will not appear on the result ofPublicGroupChannelListQuery.
- if
- Improved stability.
- Improved stability.
- Improved stability.
- Fixed minor bug.
- Fixed minor bug.
- Added getter methods of
GroupChannelListQueryandPublicGroupChannelListQueryproperties. - Added overriding method
equals()inBaseMessage,AdminMessage,FileMessage,UserMessage,User,SenderandMember. - Fixed minor bug.
- Fixed minor bug.
- Added
enum PushTriggerOption {ALL, OFF, MENTION_ONLY, DEFAULT}inGroupChannel.ALL: It receives all push notifications.OFF: It doesn't receive any push notifications.MENTION_ONLY: It receives push notifications which mention me.DEFAULT: It receives push notifications according to the state ofPushTriggerOptioninSendBird.PushTriggerOptionofGroupChannelhas higher priority thanSendBird's. It depends onSendBird'sPushTriggerOptiononly whenGroupChannel'sPushTriggerOptionisDEFAULT.
- Added
setMyPushTriggerOption(PushTriggerOption pushTriggerOption, GroupChannelSetMyPushTriggerOptionHandler handler)inGroupChannel. - Added
getMyPushTriggerOption(GroupChannelGetMyPushTriggerOptionHandler handler)inGroupChannel. - Added
enum PushTriggerOption {ALL, OFF, MENTION_ONLY}inSendBird.ALL: It receives all push notifications.OFF: It doesn't receive any push notifications.MENTION_ONLY: It receives push notifications which mention me.
- Added
setPushTriggerOption(PushTriggerOption pushTriggerOption, SetPushTriggerOptionHandler handler)inSendBird. - Added
getPushTriggerOption(GetPushTriggerOptionHandler handler)inSendBird. - Added
setSnoozePeriod(boolean snoozeOn, long startTs, long endTs, SetSnoozePeriodHandler handler)inSendBird.- It snooze or stop snooze push notification in specific duration.
- Added
getSnoozePeriod(GetSnoozePeriodHandler handler)inSendBird.
- Fixed minor bugs.
- Fixed minor bugs.
- Added
createDistinctChannelIfNotExist(GroupChannelParams params, GroupChannelCreateDistinctChannelIfNotExistHandler handler)inGroupChannel.- It creates distinct channel and gets the channel with
isCreatedflag which represents whether the channel is actually created or not.
- It creates distinct channel and gets the channel with
- Added
hide(boolean hidePreviousMessages, boolean allowAutoUnhide, GroupChannelHideHandler handler)inGroupChannel. - Added
unhide(GroupChannelUnhideHandler handler)inGroupChannel. - Added
getHiddenState()inGroupChannel. - Added
enum HiddenState { UNHIDDEN, HIDDEN_ALLOW_AUTO_UNHIDE, HIDDEN_PREVENT_AUTO_UNHIDE }inGroupChannel.UNHIDDEN: It's not hidden channel.HIDDEN_ALLOW_AUTO_UNHIDE: It's hidden channel which is automatically unhidden when new message comes in.HIDDEN_PREVENT_AUTO_UNHIDE: It's hidden channel which is not unhidden when new message comes in.
- Added
setHiddenChannelFilter(HiddenChannelFilter hiddenChannelFilter)inGroupChannelListQuery. - Added
enum HiddenChannelFilter { UNHIDDEN, HIDDEN, HIDDEN_ALLOW_AUTO_UNHIDE, HIDDEN_PREVENT_AUTO_UNHIDE }inGroupChannelListQuery.UNHIDDEN: Get all unhidden channels. (default)HIDDEN: Get all hidden channels whichHiddenStateisHIDDEN_ALLOW_AUTO_UNHIDEorHIDDEN_PREVENT_AUTO_UNHIDE.HIDDEN_ALLOW_AUTO_UNHIDE: Get channels whichHiddenStateisHIDDEN_ALLOW_AUTO_UNHIDE.HIDDEN_PREVENT_AUTO_UNHIDE: Get channels whichHiddenStateisHIDDEN_PREVENT_AUTO_UNHIDE.
- Added
getMessageChangeLogsByTimestamp(long ts, GetMessageChangeLogsHandler handler)inBaseChannel.- It retrieves message change logs since the given timestamp.
- Changed type of
getSender()inUserMessageandFileMessagefromUserto a new classSenderwhich extendsUser. SenderhasisBlockedByMe()which indicates that the message sender is blocked by the current user (default: false).isBlockedByMe()is valid inGroupChannelonly.- Message from blocked users is delivered only when block_mode in SendBird application is set to explicit mode. Otherwise, it's not visible nor delivered.
- Fixed minor bugs.
- Added
ApplicationUserListQuery,BlockedUserListQuery,ParticipantListQuery,MutedUserListQueryandBannedUserListQueryclasses. - Added
setUserIdsFilter(List<String> userIds)andsetMetaDataFilter(String metaDataKey, List<String> metaDataValues)inApplicationUserListQuery. - Added
setUserIdsFilter(List<String> userIds)inBlockedUserListQuery. - Updated
createBlockedUserListQuery()inSendBirdto returnBlockedUserListQueryinstance. - Updated
createBannedUserListQuery()inGroupChannelto returnBannedUserListQueryinstance. - Updated
createParticipantListQuery()inOpenChannelto returnParticipantListQueryinstance. - Updated
createMutedUserListQuery()inOpenChannelto returnMutedUserListQueryinstance. - Updated
createBannedUserListQuery()inOpenChannelto returnBannedUserListQueryinstance. - Deprecated
UserListQuerycreateUserListQuery()inSendBird. - Deprecated
UserListQuerycreateUserListQuery(List<String> userIds)inSendBird. - Deprecated
setMetaDataFilter(String metaDataKey, List<String> metaDataValues)inUserListQuery. - Fixed minor bugs.
- Added
registerScheduledUserMessage(ScheduledUserMessageParams params, RegisterScheduledUserMessageHandler handler)inGroupChannel. - Added
ScheduledUserMessageParamsandScheduledUserMessage. - Added
setTranslationTargetLanguages(List<String> targetLanguages)and deprecatedsetTargetLanguages(List<String> targetLanguages)inUserMessageParams. - Improved stability.
- Fixed minor bugs.
- Added
getMyMutedInfo()inBaseChannel. - Added
muteUser(User user, String description, int seconds, GroupChannelMuteHandler handler)inGroupChannel. - Added
muteUserWithUserId(String userId, String description, int seconds, GroupChannelMuteHandler handler)inGroupChannel. - Added
muteUser(User user, String description, int seconds, OpenChannelMuteHandler handler)inOpenChannel. - Added
muteUserWithUserId(String userId, String description, int seconds, OpenChannelMuteHandler handler)inOpenChannel. - Added
setOrder(Order.METADATA_VALUE_ALPHABETICAL)withsetMetaDataOrderKeyFilter()inGroupChannelListQueryandPublicGroupChannelListQuery.
- Stabilized
updateCurrentUserInfoWithProfileImage().
- Added
getLastConnectedAt()inSendBird. - Fixed minor bugs.
- Improved stability.
- Added
getTotalUnreadMessageCount(GroupChannel.GroupChannelTotalUnreadMessageCountHandler handler)inSendBird. - Added
getTotalUnreadMessageCount(List<String> channelCustomTypes, GroupChannel.GroupChannelTotalUnreadMessageCountHandler handler)inSendBird. - Added
getTotalUnreadMessageCount(GroupChannelTotalUnreadMessageCountParams params, GroupChannel.GroupChannelTotalUnreadMessageCountHandler handler)inSendBird. - Added
getUnreadItemCount(Collection<GroupChannel.UnreadItemKey> keys, GroupChannel.GroupChannelGetUnreadItemCountHandler handler)inSendBird. - Added
getTotalUnreadChannelCount(GroupChannel.GroupChannelTotalUnreadChannelCountHandler handler)inSendBird. - Added
getGroupChannelCount(GroupChannelListQuery.MemberStateFilter memberStateFilter, GroupChannel.GroupChannelChannelCountHandler handler)inSendBird. - Added
getReadMembers(BaseMessage message, boolean includeAllMembers), getUnreadMembers(BaseMessage message, boolean includeAllMembers)andgetReadStatus(boolean includeAllMembers)inGroupChannel. - Added a
ERR_CONNECTION_CANCELEDerror code for the connect cancel event which usually occurs on disconnect while connecting. - Deprecated
CLOSINGin enumConnectionStateinSendBird. - Deprecated
createChannel(List<User> users, boolean isDistinct, String name, Object coverUrlOrImage, String data, GroupChannelCreateHandler handler)inGroupChannel. - Deprecated
createChannelWithUserIds(List<String> userIds, boolean isDistinct, String name, Object coverUrlOrImage, String data, GroupChannelCreateHandler handler)inGroupChannel. - Deprecated
updateChannel(boolean isDistinct, String name, Object coverUrlOrImage, String data, GroupChannelUpdateHandler handler)inGroupChannel. - Deprecated
getTotalUnreadMessageCount(GroupChannelTotalUnreadMessageCountHandler handler)inGroupChannel. - Deprecated
getTotalUnreadMessageCount(List<String> channelCustomTypes, GroupChannelTotalUnreadMessageCountHandler handler)inGroupChannel. - Deprecated
getTotalUnreadMessageCount(GroupChannelTotalUnreadMessageCountParams params, GroupChannelTotalUnreadMessageCountHandler handler)inGroupChannel. - Deprecated
getUnreadItemCount(Collection<UnreadItemKey> keys, GroupChannelGetUnreadItemCountHandler handler)inGroupChannel. - Deprecated
getTotalUnreadChannelCount(GroupChannelTotalUnreadChannelCountHandler handler)inGroupChannel. - Deprecated
getChannelCount(GroupChannelListQuery.MemberStateFilter memberStateFilter, GroupChannelChannelCountHandler handler)inGroupChannel. - Deprecated
getReadMembers(BaseMessage message), getUnreadMembers(BaseMessage message)andgetReadStatus()inGroupChannel. - Deprecated
createChannel(String name, Object coverUrlOrImage, String data, OpenChannelCreateHandler handler)inOpenChannel. - Deprecated
createChannel(String name, Object coverUrlOrImage, String data, List<User> operatorUsers, OpenChannelCreateHandler handler)inOpenChannel. - Deprecated
updateChannel(String name, Object coverUrlOrImage, String data, List<User> operatorUsers, OpenChannelUpdateHandler handler)inOpenChannel. - Deprecated
sendFileMessage(File file, String name, String type, int size, String data, String customType, SendFileMessageHandler handler)inBaseChannel. - Deprecated
sendFileMessage(File file, String name, String type, int size, String data, String customType, SendFileMessageWithProgressHandler handler)inBaseChannel. - Deprecated
sendUserMessage(String message, String data, SendUserMessageHandler handler)inBaseChannel. - Deprecated
sendUserMessage(String message, String data, String customType, SendUserMessageHandler handler)inBaseChannel. - Fixed minor bugs.
- Improved stability.
- From now,
useMemberAsMessageSender()option is true by default. - Fixed a bug previous messages not showing the sender's latest user metadata.
- Added
SendBird.Options.useUiThreadForCallbacks()to give developers an option for threads the callbacks are running. By default, it is UI thread but you can choose to run on background threads. - Fixed minor bugs.
- Added
updateUserMessage()withUserMessageParamsinBaseChannel. - Added
updateFileMessage()withFileMessageParamsinBaseChannel. - Added
UserMessageParams()default constructor inUserMessageParams. - Added
setMessage()inUserMessageParams. - Added
FileMessageParams()default constructor inFileMessageParams. - Added
setFileUrl()andsetFile()inFileMessageParams. - Minor bug fixed.
- Improved connection management.
- Fixed a bug occasionally occurring when a group channel is created with multiple users.
- Fixed TLS handshake related bug in Android 8.1.0.
- Added
getInvitedAt()inGroupChannel.
- Minor bug fixed.
- Added
load(MessageListQueryResult handler),setLimit(),setReverse(),setMessageTypeFilter(),setCustomTypeFilter(),setSenderUserIdsFilter()inPreviousMessageListQuery. - Added
getNextMessagesByTimestamp(),getPreviousMessagesByTimestamp(),getPreviousAndNextMessagesByTimestamp(),getNextMessagesById(),getPreviousMessagesById(),getPreviousAndNextMessagesById()withsendUserIdsparameter inBaseChannel.
- Disabled to put the current user into
mentionedUsers,mentionedUserIdsinUserMessageParamsandFileMessageParams. - Changed not to increase
unreadMentionCountand not to callonMentionReceivedfor CHANNEL mention by the current user (i.e. the message sender is the current user).
- Added
getUnreadMentionCount()inGroupChannel. - Added
UNREAD_MENTION_COUNT_ONLYinCountPreferenceinGroupChannel. - Added
GROUP_CHANNEL_UNREAD_MESSAGE_COUNT,GROUP_CHANNEL_UNREAD_MENTION_COUNT,GROUP_CHANNEL_INVITATION_COUNT,NONSUPER_UNREAD_MENTION_COUNT,SUPER_UNREAD_MENTION_COUNTin enumUnreadItemKeyinGroupChannel. - Added
getMentionType()inBaseMessagewith enumMentionType { USERS, CHANNEL }inBaseMessageParams. - Added
setMentionType()inUserMessageParamsandFileMessageParams.
- Added
getMyCountPreference()andsetMyCountPreference()inGroupChannel. - Added
setNicknameStartsWithFilter()inGroupChannelMemberListQuery.
- Added
getJoinedMemberCount()inGroupChannelto show the total count of joined users in aGroupChannel. - Added
getMyMutedState()inGroupChannelto show the state of the connected user in aGroupChannel. - Added
setMemberStateFilter()inGroupChannelMemberListQueryto search members based on the state of the member in aGroupChannel. - Added
getUnreadItemCount()inGroupChannelwithenum UnreadItemKey{NONSUPER_UNREAD_MESSAGE_COUNT,SUPER_UNREAD_MESSAGE_COUNT,NONSUPER_INVITATION_COUNT,SUPER_INVITATION_COUNT}.
- Added a typing indicator throttle option in
SendBird.Options. - Fixed a minor bug when uploading file in background.
- Fixed an occasional member count mismatch in a super group channel.
- Added
getTotalUnreadMessageCount()withGroupChannelTotalUnreadMessageCountParamsinGroupChannelto support filter for total unread message count. - Added
getMyRole()inGroupChannelto specify the current user is operator of the channel or not.
- Now
GroupChannelMemberListQueryreturns the member list in nickname alphabetical order. - Improved connection stability.
- Added
createOperatorListQuery()inBaseChannelandOperatorListQuery. - Deprecated
setOperatorFilter(OperatorFilter operatorFilter)andOperatorFilterinGroupChannelMemberListQuery.
- Added
getTotalUnreadMessageCount()with channel custom types filter inGroupChannel. - Added
setPushNotificationDeliveryOption(PushNotificationDeliveryOption pushNotificationDeliveryOption)inUserMessageParamsandFileMessageParams.
- From now, an ephemeral
GroupChannelmaintains the last message and unread message count after the connection is made.
- Fixed
groupChannel.getMyMemberState()returning not accurate value for the 1st time.
- Added
setConnectionTimeout()toSendBird.Optionsto support configurable connection timeout.
- Added
setEphemeral(boolean isEphemeral)inGroupChannelParamsto create a channel not allowing message retention. - Added
isEphemeral()inBaseChannel. - Added
BaseMessageParams,UserMessageParamsandFileMessageParamsto send messages in object form.BaseMessageParamssupport mentioned messages bysetMentionedUserIdsandsetMentionedUsers.
- Added
sendUserMessage(UserMessageParams params, SendUserMessageHandler handler)inBaseChannel. - Added
sendFileMessage(FileMessageParams params, SendFileMessageHandler handler)inBaseChannel. - Added
sendFileMessage(FileMessageParams params, SendFileMessageWithProgressHandler handler)inBaseChannel. - Added
onMentionReceived(BaseChannel channel, BaseMessage message)inChannelHandlerto receive mentioned message. - Added
getMentionedUsers()inBaseMessage. - Added
getMyMemberState()inGroupChannelfor current logged-in user's joined state for the channel. - Deprecated
MemberStateenumerator inGroupChanneland addedMemberStateFilterinGroupChannelListQueryenumerator instead. - Deprecated
getChannelCount(MemberState memberState, GroupChannelChannelCountHandler handler)inGroupChannel. - Added
getChannelCount(GroupChannelListQuery.MemberStateFilter memberStateFilter, GroupChannelChannelCountHandler handler)inGroupChannel. - Deprecated
setMemberStateFilter(GroupChannel.MemberState memberState)inGroupChannelListQuery. - Added
setMemberStateFilter(MemberStateFilter memberStateFilter)inGroupChannelListQuery. - Deprecated
getState()in Member and addedgetMemberState()instead. - Improved stabilization.
- Fix minor bug.
- Added
setOperators()andsetOperatorUserIds()inGroupChannelParams. - Added
freeze(),unfreeze()andisFrozen()inGroupChannel. - Added
banUser()andbanUserWithUserId()inGroupChannel. - Added
unbanUser()andunbanUserWithUserId()inGroupChannel. - Added
muteUser()andmuteUserWithUserId()inGroupChannel. - Added
unmuteUser()andunmuteUserWithUserId()inGroupChannel. - Added
createBannedUserListQuery()inGroupChannel. - Added
setOperatorFilter()andsetMutedMemberFilter()inGroupChannelMemberListQuery. - Modified
onUserBanned(OpenChannel channel, User user)toonUserBanned(BaseChannel channel, User user)inChannelHandler. - Modified
onUserUnbanned(OpenChannel channel, User user)toonUserUnbanned(BaseChannel channel, User user)inChannelHandler. - Modified
onUserMuted(OpenChannel channel, User user)toonUserMuted(BaseChannel channel, User user)inChannelHandler. - Modified
onUserUnmuted(OpenChannel channel, User user)toonUserUnmuted(BaseChannel channel, User user)inChannelHandler. - Modified
onChannelFrozen(OpenChannel channel, User user)toonChannelFrozen(BaseChannel channel, User user)inChannelHandler. - Modified
onChannelUnfrozen(OpenChannel channel, User user)toonChannelUnfrozen(BaseChannel channel, User user)inChannelHandler. - Now
senderinUserMessageandFileMessagesupportgetMetaData().
- Added
createPublicGroupChannelListQuery()inGroupChannel. - Added
isPublic()inGroupChannel. - Added join in
GroupChannel. - Added
CHANNEL_NAME_ALPHABETICALinOrderinGroupChannelListQuery. - Added
PublicChannelFilterinGroupChannelListQuery. - Added
setCustomTypeStartsWithFilter()inGroupChannelListQuery. - Added
setPublicChannelFilter()inGroupChannelListQuery. - Added
setPublic()inGroupChannelParams. - Added
setChannelUrl()inGroupChannelParams. - Added
PublicGroupChannelListQuery. - Improved stabilization.
- Added
createChannel()withGroupChannelParamsinGroupChannel. - Added
createMemberListQuery()inGroupChannel. - Added
isSuper()inGroupChannel. - Added
updateChannel()withGroupChannelParamsinGroupChannel. - Deprecated
getLastSeenAtBy()inGroupChannel. - Deprecated
getLastSeenAtByWithUserId()inGroupChannel. - Added
SuperChannelFilterinGroupChannelListQuery. - Added
setSuperChannelFilter()inGroupChannelListQuery. - Added
GroupChannelMemberListQuery. - Added
GroupChannelParams.
- Improved stabilization of calling
disconnect()while sending messages or mark as read. - Deprecated
markAsReadAll()inGroupChannel. - Added
INVITED_BY_FRIEND,INVITED_BY_NON_FRIENDinsetMemberStateFilter()inGroupChannelListQuery. - Added
markAsReadAll()inSendBird. - Added
markAsReadWithChannelUrls()inSendBird. - Fixed Minor bugs.
- Added
FriendListQuery. - Added
setCustomTypesFilter()inGroupChannelListQuery. - Added
addUserEventHandler()inSendBird. - Added ``removeUserEventHandler()
inSendBird`. - Added
removeAllUserEventHandlers()inSendBird. - Added
addFriends()inSendBird. - Added
deleteFriends()inSendBird. - Added
deleteFriend()inSendBird. - Added
uploadFriendDiscoveries()inSendBird. - Added
deleteFriendDiscoveries()inSendBird. - Added
deleteFriendDiscovery()inSendBird. - Added
getFriendChangeLogsByToken()inSendBird. - Added
createFriendListQuery()inSendBird. - Added
getOriginalProfileUrl()inUser. - Improved
ConnectHandlercallback. - Fixed Minor bugs.
- Improved connection stability.
- Improved connection stability.
- Modified
getConnectionState()method. - Added
isActive()toUser.
- Modified
init()method.
- Stabilized to support Android O.
- Fixed
GroupChannelisHidden()bug.
- Added
onChannelHidden()toChannelHandler.
- Fixed bugs handler for connect is not called when the application becomes foreground.
- Added
isHidden()toGroupChannel. - Stabilized connection.
- Fixed a minor bug on blocking or unblocking users.
- Added
getChannelCounttoGroupChannel. - Added
resetMyHistorytoGroupChannelnot to load messages created before the reset. - Added network detection and auto reconnect when the network is detected. (
SendBird.setNetworkAwarenessReconnectionis provided to enable this option - default true)
- Added
isBlockedByMeandisBlockingMeflag to group channel members. - Added
getMessageChangeLogsByTokento channel to track updated or deleted messages.
- Added new group channel hide to give you change to select whether channel member can load previous messages when the channel reappears.
- Added user
MetaDatafeature. - Added freeze status flag to open channel.
- Added
ChannelHandlercallback onMetaDataandMetaCounterscreation, update and deletion. - Added channel name filter for
GroupChannelListQuery. - Added
getInviter()toGroupChannel.
- Minor bug fixes.
- No more crash when profile image with special characters in the file name is uploaded.
- Added messaging copy from one channel to other channels (Sender must be a member or participant of the channels).
- Support users to accept or decline other user's invitation to a group channel.
- Added group channel join preference for accepting invitation automatically.
- Notice: From this version, the return type of
GroupChannelmethods previously returningList<User>such asGroupChannel.getMembers,GroupChannel.getTypingMembersand etc. now returnList<Member>.
- Added feature to set and get push notification sound for the logged-in user.
- Fixed bug
BaseMessage.buildFromSerializedDataincurring crash for messages serialized by versions prior to v3.0.27.
- Added custom type filter to
OpenChannelListQueryandGroupChannelListQuery. - Added messaging editing feature.
- Added file uploading cancel.
- Added
OpenChanneldeletion.
- Fixed custom host bug.
- Added
connect()custom host feature.
- Added real size property for generated thumbnails.
- Added progress handler for file uploading.
- Support file uploading on background.
- Fixed bug
GroupChannel.getUnreadMessageCount()returning wrong value not covered on v3.0.20.
- Added
getTotalUnreadChannelCount()toGroupChannelto enable you get channel count of having unread messages. - Fixed
getTotalUnreadMessageCount()to return correct value when it is called inChannelHandler.onChannelChangedaftermarkAsRead()is called.
- Added getting messages methods to
BaseChanneland they support type/customType filtering. - Added option for using channel member's profile URL and nickname as message sender's.
- Support updating channel member's profile URL and nickname automatically.
- Fixed bug
GroupChannel.getUnreadMessageCount()not returning correct value.
- Added file encryption and access control feature.
- Provide serialization/deserialization for user, channel and message objects for developers to take advantage of their own local cache.
- Sender is excluded from read receipt.
- Fixed bug
GroupChannel.getReadReceipt()always returning the count of members of the channel after the first connection. - From now, empty string as user ID is not accepted.
- Fixed bug calling
ChannelHandler.onReadReceiptUpdated()even whenmarkAsRead()is called from the same user connected on other devices. - Improved stability by removing occasional NPE crash on connection or reconnection.
- Added
reconnect()to support explicit reconnection process. - Added
removeAllConnectionHandlers()andremoveAllChannelHandlers(). - Improved network call performance after reconnection is established.
- Fixed bug removing connection handlers and channel handlers when
disconnect()is called. - Improved stability.
- Fixed bugs returning wrong unread count of messages when users are invited to
GroupChannel. - Fixed bugs occurring occasional crash when
getReadReceipt(),getReadMembers()or etc are called.
- Added thumbnail generating option when image file is uploaded.
- Changed connection protocol to avoid connection reset which can occur when application runs behind proxy.
- Added push notification template option, which gives option to users the way to display push notification messages.
- Improved to try connection without delay when reconnection is needed.
- Added unique push token registration option, which makes sure to maintain only one GCM/FCM token for the current user.
- Added
GroupChannel.isPushEnabled()to check push preference for each group channel. - Deprecated
GroupChannel.getPushPreference(). - Fixed randomly occurring NPE crash when user join event or read receipt update event happen.
- Improved stability.
- Added user IDs filters and query type to
GroupChannelListQuery. - Added channel custom type for
OpenChannelandGroupChannel. - Fixed to call
ChannelHandler.onChannelChangedwhen unread message count or last message has been updated.
- Fixed to update last message of group channel when
UserMessageorFileMessageis successfully sent. - Improved stability.
- Fixed connection bug.
- Added group channel list search by a member nickname. (Search by multiple nicknames option in v3.0.5 is no more supported.)
- Added auto-translating feature to
UserMessage. - Improved connection performance.
- Improved stability.
- Added custom type to messages.
- Added group channel list search by member nicknames and user IDs.
- Added creating and updating channel cover image with binary file.
- Fixed file uploading timeout.
- Supports Android 7.0 (Nougat) and FCM.
- Fixed to increase unread message count only for others' message reception.
- Improved performance and stability.
- Added features like filtered user list, open channel keyword search, push preference setting, etc.
- Added auto background detection.
- Improved stability.
- Fixed minor bugs.
- First release.