You can now create custom posts
PostRepository.createPost({ dataType: string, data: Object })
Comment
Fix the issue of fetching X comments with first / last sorting in CommentRepository.queryComments(parameters: Object)
Reaction
Normalized API accross the SDK
Post
PostRepository()
PostRepository.postForId(postId: string)
PostRepository.createPost(postType: string)
PostRepository.updatePost({ postId: string, data: Object })
async PostRepository.deletePost(postId: string)
async PostRepository.addReaction(postId: string)
async PostRepository.removeReaction(postId: string)
async PostRepository.flag(postId: string)
async PostRepository.unflag(postId: string)
async PostRepository.isFlaggedByMe(postId: string)
Comment
CommentRepository()
CommentRepository.queryComments(parameters: Object)
CommentRepository.commentForId(commentId: string)
CommentRepository.createComment(parameters: Object)
CommentRepository.editComment({ commentId: string, data: Object })
async CommentRepository.deleteComment(commentId: string)
async CommentRepository.addReaction(commentId: string)
async CommentRepository.removeReaction(commentId: string)
async CommentRepository.flag(commentId: string)
async CommentRepository.unflag(commentId: string)
async CommentRepository.isFlaggedByMe(commentId: string)
User
UserRepository.getAllUsers(sortBy?: EkoUserSortingMethod)
UserRepository.searchUserByDisplayName(search: string)
Added unreadCount in ChannelMembershipModel
exampleChannelMembershipModel.unreadCount;
Threaded messages:
MessageModel.parentId;
: Message ID of a parent message
MessageRepository.messagesForChannel
now allow parameters parentId: string
and filterByParentId: boolean
to perform queries on threads of messages
Reactions:
{ reactions: Object, reactionsCount: number, myReactions: string[] }
is added to MessageModel to support reactions
ReactorRepository(messageModel: MessageModel);
async ReactorRepository.addReaction(reactionName: string);
async ReactorRepository.removeReaction(reactionName: string);
A new Message Flagger Repository has been added and all message flagging has been moving to this repository:
MessageFlagRepository(messageId);
MessageFlagRepository.flag({ messageId });
MessageFlagRepository.unflag({ messageId });
You can check if you have flagged a message before
await MessageFlagRepository.isFlaggedByMe();
MessageModel now contains a cache for the isFlaggedByMe result
MessageModel.isFlaggedByMeCache;
You can now edit user metadata:
client.setUserMetadata({ test: "test" });
You can now filter channels by tags/excludingTags:
ChannelRepository.channelsWithFilters({ tags: [1,2,3], excludingTags: [4,5,6] });
You can now edit and delete message text:
MessageEditorRepository.editText('new edited text');
MessageEditorRepository.delete();
You can now read and unread channels:
ChannelMembershipRepository.startReading()
ChannelMembershipRepository.stopReading()
You can now be able to flag/unflag a message:
MessageRepository.flag({ messageId });
MessageRepository.unflag({ messageId });
You can now be able to flag/unflag a user:
UserRepository.flag({ userId });
UserRepository.unflag({ userId });
Fixed an issue with LiveObject and LiveCollection when they stop listen for updates from server after unregister/register. (case with SPA multiuser UI).
Enhanced Array.prototype.sort() comparison functions to be in sync with last updates in V8 (changes for sort()
already delivered in Chrome 70 and node-v11).
This page contains an overview of all relevant changes made to the Amity Social Cloud platform modules and its latest version releases
Eko Messaging SDK 4.8.0 is released.
Add push notification functionality to EkoCommunityRepository
Refer to Push notifications documentation.
None
Set turn on and off push notification as user level by .setAllowed(allowed: Boolean)
Get push notification setting values as user level by .isAllowed(): Single<Boolean>
None
None
OKHTTP - 3.10.0
Retrofit - 2.4.0
Kotlin-std-lib - 1.3.72
Eko Messaging SDK 4.7.2 is released.
New APIs
Add a function to observe broadcasting status in EkoStreamBroadcaster
. For further information please see here.
Breaking APIs
None
Deprecations
None
Fixes
None
Behavioural changes
None
Compatibility
OKHTTP - 3.10.0
Retrofit - 2.4.0
Kotlin-std-lib - 1.3.72
Eko Messaging SDK 4.7.1 is released.
None
None
None
Optimize PagedList configuration
Fix incorrect pagination of categories
None
OKHTTP - 3.10.0
Retrofit - 2.4.0
Kotlin-std-lib - 1.3.72
Eko Messaging SDK 4.7.0 is released.
Introduce eko-video-publisher
for video broadcasting. Refer to Video documentation.
Add manual paging functionality to EkoCommentQuery
Refer to Comment documentation.
None
None
None
None
OKHTTP - 3.10.0
Retrofit - 2.4.0
Kotlin-std-lib - 1.3.72
Eko Messaging SDK 4.6.0 is released.
Add new option .roles(roles: List<String>)
inEkoChannelMembershipQuery.Builder
. Refer to Channel
documentation.
Add new option .sortBy(option: EkoCommentSortOption)
in EkoCommentQuery.Builder
. Refer to Comment
documentation.
Add new API getLatestComment()
in EkoCommentRepository
. Refer to Comment
documentation.
Add custom dataType
support for EkoPost
. Refer to Feed
documentation.
Change query option setIsLive(isLive: Boolean)
to setStatus(statuses: Array)
in EkoStreamQuery.Builder
. The user is now able to query live-stream videos based on its statues.
Query memberships by role. .role(role: String)
ImprovegetMyReactions()
performance on EkoMessage
, EkoPost
, EkoComment
None
OKHTTP - 3.10.0
Retrofit - 2.4.0
Kotlin-std-lib - 1.3.72
Eko Messaging SDK 4.5.1 is released.
None
None
None
Active user missing from community list when community has more than 10 members
None
OKHTTP - 3.10.0
Retrofit - 2.4.0
Kotlin-std-lib - 1.3.72
Eko Messaging SDK 4.5.0 is released.
Add query option setIsLive(boolean)
in EkoStreamQuery.Builder
. The user is now able to query currently live or ended live-stream videos.
Add new method getRecordings()
in EkoStream
model . The user is now able to get recorded videos.
None
None
None
None
OKHTTP - 3.10.0
Retrofit - 2.4.0
Kotlin-std-lib - 1.3.72
Eko Messaging SDK 4.4.2 is released.
Comment in FAILED
state can be hard deleted by deleteComment(commentId)
API
Post deletion by deletePost(postId)
API results in hard deletion of the post from Global feed ranking
Add automatic file name encoding for EkoFileRepository
upload API
Fixed incorrect behaviour of private community query.
Eko Messaging SDK 4.4.1 is released.
Comment isDeleted
property to be updated after initial query.
Eko Messaging SDK 4.4.0 is released.
Add role
and permission
feature. Refer to Channel
and Community
documentation.
Add getCommunityMembership(userId)
API to EkoCommunityParticipation
Refer to Community
documentation.
Add addRole/RemoveRole(role, userIds)
API to EkoCommunityModeration
Refer to Community
documentation.
Add hasPermission(ekoPermission)
API to EkoClient
Refer to Permission
documentation.
Add AUDIO
message type.
Add getUploadInfo(uploadId)
API to EkoFileRepository
Due to revised role
and permission
feature, user'sglobal role
can only be set from admin panel/ admin API, hence the removal of setRoles()
from EkoClient
. User would still be able to add / remove role at Channel
and Community
level should they have necessary permissions.
Aligning file related message data return type with Feed
feature,
Replacing getUrl() : String
with getImage() : EkoImage
inEkoMessage.Data.IMAGE
Replacing getUrl() : String
with getFile() : EkoFile
inEkoMessage.Data.FILE
Eko Messaging SDK 4.2.0 is released.
Add Community
feature. Refer to Community
documentation.
Add Feed
feature. Refer to Feed
documentation.
Add Live Stream
feature. Refer to Live Stream
documentation.
Introduce new Channel types; Community
and Live
. Refer to Channels
documentation.
Introduce new EkoClient.registerDevice(userId)
API where displayname
is optional. Refer to Setup
documentation.
Deprecating Channel type Standard
and Private
Deprecating EkoClient.registerDevice(userId, displayname)
API
Eko Messaging SDK 3.3.0
is released.
Add SDK environment configuration feature. Please see Setup documentation.
Eko Messaging SDK 4.0.0 is released.
Add Comment
on content
feature
Revise all existing APIs . See each feature documentation for more info.
Eko Messaging SDK 3.2.6
is released.
Change return type of getMessage(String messageId)
API from EkoLiveData
to Flowable
Missing user data from getMessage(String messageId)
API
Eko Messaging SDK 3.2.3
is released.
Return EkoChannel
with createConversation()
Eko Messaging SDK 3.2.2
is released.
Add metadata
createChannel(String channelId, EkoChannel.CreationType type, EkoChannel.CreateOption option)
API
Add metadata createConversation(String userId, JsonObject metadata)
API
Prevent crash on EkoPagedListAdapter
Eko Messaging SDK 2.8.1
is released.
Prevent crash on EkoPagedListAdapter
Eko Messaging SDK 3.2.1
is released.
Add getAllUsers(EkoUserSortOption option)
API
Add searchUserByDisplayName(String displayname, EkoUserSortOption option)
API
Optimized socket rescheduling request queue.
Improved diffUtil logic of EkoChannelAdapter
and EkoChannelMembershipAdapter
.
Eko Messaging SDK 3.1.1
is released.
Add getMessage(String messageId)
API
Eko Messaging SDK 2.8.0
is released.
Add getMessage(String messageId)
API
Eko Messaging SDK 3.0.0
is released.
New channel types (Private, Broadcast, Conversation); Support creation and query of new channel types.
Creating a channel requires a EkoChannel.CreationType
as a parameter.
Channel query has been converted to builder pattern to support query of new channel types.
EkoChannelRepository.getOrCreatedById()
is deprecated.
EkoChannelRepository.getChannelCollection()
returning LiveData> is deprecated.
Eko Messaging SDK 2.7.1
is released.
Fixed message query failed for the channel creator that has null
displayname.
Eko Messaging SDK 2.7.0
is released.
Added Optimistic logic for add / remove reactions. Reaction count reflects instantly upon API call and automatically reverts in case of error.
Update DiffUtil
logic in EkoMessageAdapter
.
Eko Messaging SDK 2.6.2
is released.
Fixed myReaction
is inaccurate when the same user is on multi devices.
Applied a workaround for https://issuetracker.google.com/issues/135628748 (IndexOutOfBoundException
in AsyncPagedListDiffer
) to EkoChannelAdapter
, EkoMessageAdapter
, EkoMessageReactionAdapter
, and EkoChannelMembershipAdapter
.
Eko Messaging SDK 2.6.0
is released.
Add support of metadata for EkoUser
Eko Messaging SDK 2.5.1
is released.
Fixed myReaction
value stops EkoMessage
observation.
Eko Messaging SDK 2.5.0
is released.
Add Message reaction feature:
A reaction can be added or removed from a message with EkoMessageReactor
.
A reaction collection of a message can be queried with EkoMessageRepository
.
Add Reaction related data to EkoMessage
.
Eko Messaging SDK 2.3.0
is released.
A message can only be deleted by an editor corresponding to its type.
Add editor for each message type
EkoTextMessageEditor
can edit and delete a message of type text
.
EkoImageMessageEditor
can delete a message of type image
.
EkoFileMessageEditor
can delete a message of type file
.
EkoCustomMessageEditor
can edit and delete a message of type custom
.
Eko Messaging SDK 2.1.1
is released.
All message types are now based on Builder pattern.
The method build()
is now required to be called before the method send()
.
When creating an Image message with EkoMessageCreator
, a valid file Uri is required to be passed as a parameter.
Add File message type: a message of this type can be created with a file Uri. The file is automatically uploaded to the server and can be retrieved with a url that is accessible in FileData
model.
Add Custom message type: a message of this type can be created with a JsonObject
. This object is included in the data
property of the message. Developers can parse their customed data by creating a model that reflects the structure of the customed JsonObject
.
Eko Messaging SDK 2.0.0
is released.
Migrate to AndroidX
EkoMessageRepository
replaces the function getMessageCollection(channelId)
with getMessageCollection(channelId, stackFromEnd)
, along with many other new options such as getMessageCollection(channelId, includingTags, stackFromEnd)
, getMessageCollection(channelId, includingTags, excludingTags, stackFromEnd)
.
Message tagging support:
Messages can now be sent along with customized tags.
Messages can now be filtered by tags (both including and excluding).
Tags can also be set on any message.
Every message has a new tags
property.
Message sorting support:
Messages can now be fetched from the oldest first, or the newest first.
Message parenting support:
Messages can now be connected on creation by passing a new optional parentId
value.
Note how a message child can also become a parent itself, without any limit.
The parentId
must be passed on the child message creation and cannot be changed afterwards.
Every message has a new optional parentId
and childrenNumber
property.
Eko Messaging SDK 1.12.0
is released.
Moving repository from Bintray to Jitpack, Getting Started.
EkoClient.registerDeviceForPushNotification()
method is now parameterless, Client Registration.
Push notification services in China.
Eko Messaging SDK 1.10.1
is released.
Fixed EkoMessage
collection doesn't contain messages sent while you were offline.
Fixed EkoClient.getUserId()
and EkoClient.getDisplayName()
return data of in-active account.
Eko Messaging SDK 1.10.0
is released.
Add Push Notification toggles: users can now choose to mute selected channels or stop receiving notifications completely from any device. The new settings, documentented in the Notifications section, are per user, not per single device.
Eko Messaging SDK 1.9.0
is released.
Add Push Notification feature: developers can call register and unregister for push notification directly from the EkoClient
Read more about the feature in the new Notifications section.
Eko Messaging SDK 1.8.0
is released.
Add new EkoError.USER_IS_GLOBAL_BANNED
when a user is banned globally is automatically unregistered and the EkoChat sdk will be on a clean state.
Eko Messaging SDK 1.7.0
is released.
EkoChannelRepository.getChannelCollectionByTags(filter, includingTags)
returns List of channels with ANY provided tags.
EkoChannelRepository.getChannelCollectionByTags(filter, includingTags, excludingTags)
returns List of channels with ANY provided tags AND without ANY provided tags.
Added two new channel types EkoChannel.Type.BROADCAST
and EkoChannel.Type.CONVERSATION
(channels with conversation type won't be seen in Admin Panel because of privacy concerns)
Eko Messaging SDK 1.6.0
is released.
EkoChannelMembershipRepository.getChannelMembershipCollection(channelId)
returns List of memberships of the channel.
Eko Messaging SDK 1.5.0
is released.
EkoMessage.isFlaggedByMe()
and EkoUser.isFlaggedByMe()
tell whether you've already flagged this EkoMessage
and EkoUser
or not.
Eko Messaging SDK 1.4.0
is released.
You can now be able to flag/unflag a message EkoMessageRepository.report(messageId).flag()
or EkoMessage.report().flag()
and EkoMessageRepository.report(messageId).unflag()
or EkoMessage.report().unflag()
You can now be able to flag/unflag a user EkoUserRepository.report(userId).flag()
or EkoUser.report().flag()
and EkoUserRepository.report(messageId).unflag()
or EkoUser.report().unflag()
Eko Messaging SDK 1.3.0
is released.
EkoMessage.getEditedAt()
returns DateTime instead of string.
EkoChannel.membership().startReading()
will not return anything.
EkoChannel.membership().stopReading()
will not return anything.
EkoLiveData
will no longer return a proxy object.
if you are in a live reading mode and lost internet connection, The SDK will automatically re-enables the live reading mode after re-gaining internet connection.
EkoChannel.getLastActivity()
returns updated DateTime after receiving all message events.
EkoChannel.getUnreadCount()
returns zero after joining a channel.
3 new error codes which are INVALID_REGULAR_EXPRESSION(400001)
, TOO_MANY_MEMBER_ERROR(400310)
and RPC_RATE_LIMIT_ERROR(400311)
Fixed EkoChannel
collection with the filter EkoChannelFilter.NOT_MEMBER
not contains channel you are banned from.
Eko Messaging SDK 1.1.2
is released.
Fixed EkoChannel
collection with the filter EkoChannelFilter.NOT_MEMBER
contains channel you joined.
Fixed EkoChannel
data not update in real-time.
Eko Messaging SDK 1.1.0
is released.
The parameterless EkoChannelRepository.getChannelCollection()
method now required a single parameter of EkoChannelFilter
.
Delete message
Unread message count
You can create a EkoChannel
collection that contains
EkoChannelFilter.MEMBER
: channels that you have joined.
EkoChannelFilter.NOT_MEMBER
: channels in the system which you haven't joined.
EkoChannelFilter.ALL
: all channels.
Live Reading: Eko Messaging SDK now supports live reading mode. When you are in live reading mode, all new message are marked as read automatically.
EkoChannel.membership().startReading()
: enables live reading mode. Should be called in onResume()
method.
EkoChannel.membership().stopReading()
: disables live reading mode. Should be called in onPause()
method.
EkoMessageRepository.getCount()
is deprecated.
EkoMessageRepository.getCount(channelId)
is deprecated.
Eko Messaging SDK 1.0.2
is released with improved network bandwidth efficiency.
Fixed EkoMessage.getUser()
returns null
instead of EkoUser
the sender of the message.
Eko Messaging SDK 1.0.1
is released with internal changes.
Eko Messaging SDK 1.0.0
is released.
All notable changes to the Amity Social Cloud Console will be documented here.
This page contains an overview of all relevant changes made to the Amity Social Cloud platform modules and its latest version releases
N/A
Add EkoUserNotification
and EkoUserNotificationModule
class for supporting user notification settings
Add EkoCommunityNotification
and EkoCommunityNotificationEvent
class for supporting community notification settings
Add notificationManagerForCommunityId:
method in EkoCommunityRepository
class to provide EkoCommunityNotificationsManager
Add EkoRoleFilter
and EkoRoleFilterType
; class and enum for defining what roles would be affected by notification setting
Add a function to observe broadcasting status in EkoStreamBroadcaster.
Add a new method getLatestComment:
comment in EkoCommentRepository ` to fetch single latest comment.
Add EkoLiveVideoBroadcastKit.xcframework
. The tool helps broadcasting live video from mobile.
Add live video broadcasting functionalities in the sample app.
Add displayName
option in EkoCommunitySortOption
enum to sort list of communities alphabetically.
Fix issue where dataStatus
for EkoObject
was not reflected correctly.
Add EkoCommunityFeedSortOption
enum.
sortBy
parameter type is changed to EkoCommunityFeedSortOption
for getCommunityFeed:
method in EkoFeedRepository
class.
Add EkoCommunityMembershipSortOption
enum.
sortBy
parameter type is changed to EkoCommunityMembershipSortOption
for getMemberships:
method in EkoCommunityParticipation
class.
Note: If you have been using enum in short form i.e
.displayName
, these breaking changes would not cause any effect.
Add exponential backoff for socket reconnection. Now the SDK will try to connect to socket in a time interval which increases exponentially between 1 - 300 seconds.
Add roles
parameter in membershipsForFilter
method in EkoChannelParticipation
class to query memberships based on roles.
Add childrenComments
property in EkoComment
. This property provides 5 latest comment replies.
Fix issue where commentsCount
on post wasn't updated after child comment is created.
Fix issue where community membership collection returned less number of members than actual count.
Fix getMessage:
issue in EkoMessageRepository
Update Socket.io-client-swift library to 15.2.0
Fix bugs in the live video sample app
Add EkoStreamStatus
enum and remove stream.isLive
. The developers can now use stream.status
to know the status of a stream.
Remove streamRepository.getLiveStreams()
and streamRepository.getRecordedStreams().
Add EkoStreamCollectionQuery
, the developers can now use streamRepository.getStreamsCollection(with: query)
.
Remove setEkoConfig()
method from EkoClient
. By default SDK is always pointed to production environment and simply removing usage for this code would be enough for this change.
Add recorded video url API
Add a beta version of Amity Video Player, a basic RTMP player for sample app live video.
Fix issue where post was not getting removed from global feed when deleted
Fix issue where non members could search for private communities locally
Comment in error state can be hard deleted by deleteComment()
api in EkoCommentEditor
Fix issue where deleted comment was being shown from cache
SDK is now distributed as xcframework. .dsym files are also included inside the framework. Please refer to installation docs for more info
Add new message type i.e audio. Please refer to Message documentation
EkoMediaRepository
has been depreciated. Please migrate to downloadImage:
& downloadFile:
method present in EkoMessageRepository
.
Add roles
properties in EkoCommunityMembership
class
Add hasPermission:
methods in EkoClient to check permissions for current user.
Supports Xcode 12.2
New feature: Community. Please refer to Community documentation
New feature: Feed. Please refer to documentation for Feed.
New Channel Types: Community
& Live
. Channel type Private
and Standard
has been removed. Please refer to channel documentation for more details
Older createChannel:
methods has been removed. Use new method with builder instead.
type
parameter is removed from joinChannel
method.
Older createConversation:
method has been removed. Use new createChannel
or new method with builder instead.
Fix issue where setRoles, setUserMetaData and setDisplayName was not working.
Fix issue where user object in EkoComment was null.
Remove displayName property from EkoComment. You can access display name through user property.
Add EkoCommentRepository, EkoCommentEditor and EkoCommentFlagger class. Complete documentations are on Comment section.
Add EkoReactionRepository model support reactions.
Add EkoReaction class to provide reaction info.
Support Xcode 11.7
Add UI to add & fetch comments
Add UI for reaction on comments
Support for Xcode 12
Fix bug on membership
property on EkoChannelUserModel
which has wrong result
Fix bug on isEdited
property on EkoMessage
which has an unconsistent result
No need to add zlib
integration anymore
Support Cocoapod and Carthage installation
Resolve crash when trying to access editedAt
timestamp for message
Add isEdited
property on EkoMessage
to check if message has been edited
Resolve allow display name nil
and empty string on registerDevice
Support Xcode 11.6
Resolve bug on conversation channel filtering
Support Xcode 11.5
Add getAllUsersSortedBy
method to fetch list of users in EkoUserRepository
.
Add searchUser
method to search list of users with their display name in EkoUserRepository
.
Add new UI for showing list of Users.
Refactor UI to show two tabs, one for list of users and another for channels/chat.
Support getMessage
by messageId
from EkoMessageRepository
using getMessage(messageId)
function.
Add new 'UI' for select the channel type for query.
Add new 'UI' for re-select the channel type on More
page.
Fix 'UI' for create new channel type.
Support query
all channel
types which is Standard
, Private
, Broadcast
, Conversation
, and combination.
Support creating 2 channel
types which is Standard
and Private
.
New API for creating a conversation
is embedded into EkoChannelRepository
which is createConversation
.
Add new function for retrieving the channelCollection
object by query
it through new Builder
pattern. Consists of 5 type of Builder
which is EkoStandardChannelQueryBuilder
, EkoPrivateChannelQueryBuilder
, EkoByTypesChannelQueryBuilder
, EkoBroadcastChannelQueryBuilder
and EkoConversationChannelQueryBuilder
. Each builder has their own configuration settings based on their requirements.
New getter of channelCollection
on EkoChannelRepository
that will return the EkoChannelQueryBuilder
following by the channel type then call query
method, observe the changes using EkoNotificationToken
.
Support private
and standard
channel type for createChannel
.
New enum for creation which is EkoChannelCreateType
.
New method helper inside EkoChannel
for conversion between EkoChannelCreateType
into EkoChannelType
if needed.
channelsForFilter
and channelsForFilter:includingTags:excludingTags
is deprecated function.
joinChannel
only works for join existing channel, it doesn't work for join while creating a channel simultaneously.
Support getMessage
by messageId
from EkoMessageRepository
using getMessage(messageId)
function.
Add new 'Like' UI on each message for react of Like and Unlike to test the optimistic UI.
Change implementation of EkoMessageReactor
so it able to retain the process of previous reactor.
Add optimistic UI on the Reaction
implementation.
Give safeguard for RLMRealm
access of the properties in each object.
Protect setDisplayName
of EkoClient
to be able sent with empty userId
.
Set EkoObject
to be nil in any case if model not exist or invalidated.
Protect joinChannel
parameters attribute with nonnull
protection to guarantee the channelId
is not null
value.
Make sure if the realmModel
is invalidated
then it changes the dataStatus
to be notExist
and set the EkoObject
to be nil
and continue the network request process.
Add new 'Setting' section in the settings page for updating the user meta data.
Add new 'User Meta data' section inside about page for showing the user meta data.
Add setUserMetadata
function inside EkoClient
object for updating the current user meta data.
Fix crash that happens if show reaction with empty display name.
Fix reactions model is not auto removed when someone removes the reaction.
Fix and enhance query system to clear reactions cache on first query.
Fix handle case when display name is empty.
Add support for Xcode 11.3.1.
Support query all reactions.
New method for observing all reaction which is allMessageReactionsWithMessageId
within a message on EkoMessageRepository
for retrieving all of reactions inside a specific message.
New properties on EkoMessageReaction
which is reactorId
and also reactorDisplayName
for getting the user id of the reactor along with the display name.
Add action sheet for displaying all of reactions the single message.
Support add and remove reactions.
New class EkoMessageReaction
and EkoMessageReactor
.
Add Message reaction feature, a reaction can be added or removed from a message with EkoMessageReactor
.
New properties on EkoMessage
which is reactions
data and also reactionsCount
and myReactions
.
Add action sheet for adding and removing reactions on the message.
Add action sheet for displaying all of own reactions on the message.
Change update data endpoint.
Support update custom message.
Sample App Changes
Add action sheet for editing or deleting the message by clicking on the selected message cell.
Support Custom message type:
A message of this type can be created with a Dictionary
data that following a JSON
format that the developers are responsible to parse it by themselves.
This object is included in the data
property of the message.
Support File message type:
A message of this type can be created with an NSData
of the choosen file. File could not exceed than 1 GB.
Add upload file button to choose file from the device.
New file cell view for the file message type.
Parse custom message from server into a text cell.
Add new custom view for sending the custom message, limit to only sent a key and value as a String
.
Fix handling of deleted images
Add support for Xcode 11 and Swift 5.1
Message tagging support:
Messages can now be sent along with customized tags.
Messages can now be filtered by tags (both including and excluding).
Tags can also be set on any message.
Every message has a new tags
property.
Message sorting support:
Messages can now be fetched from the oldest first, or the newest first.
Message parenting support:
Messages can now be connected on creation by passing a new optional parentId
value.
Note how a message child can also become a parent itself, without any limit.
The parentId
must be passed on the child message creation and cannot be changed afterwards.
Every message has a new optional parentId
and childrenNumber
property.
Improve background transaction performances
Remove AFNetworking dependency
Memory improvements
Enhance code documentation
Add full message tags support
Add full message order support
Add full message parenting support
Add example of message parenting usage with a special comment screen:
join a channel with tag “comments
” to see the alternative experience
Enhance api key management
Display push notifications even when app is in foreground
Reset badge count upon opening the app
Enhance project structure
EkoMessageRepository
replaces the function messages(withChannelId:)
with messages(withChannelId:reverse:)
, along with many other new options such as messages(withChannelId:includingTags:excludingTags:reverse:)
, messages(withChannelId:filterByParentId:parentId:reverse:)
.
Be aware that all the functions above are convenience function to the complete messages(withChannelId:includingTags:excludingTags:filterByParentId:parentId:reverse:)
function.
Add Push Notification toggles:
users can now choose to mute selected channels or stop receiving notifications completely from any device.
The new settings, documentented in the Notifications section, are per user, not per single device.
Adopt new push notification toggles.
Refactor various settings in new screens throughout the app.
Add Push Notification feature:
developers can call register and unregister for push notification directly from the EkoClient
instance. Read more about the feature in the new Notifications section.
Several internal performance and memory enhancements
Add notifications support (note: your implementation will work with Eko Notifications only in Production, not in sandbox/development)
Add new GlobalBanError
:
when a user is banned globally is automatically unregistered and the EkoChat sdk will be on a clean state. This event is sent to the EkoClient
's clientErrorDelegate
EkoChannel
has a new lastActivity
property
Fix register/unregister issue:
you can now use the same EkoClient to log in and log out multiple times with different users.
Improve documentation
Add possibility to login/logout with different users
ChannelListTableViewController
now displays channels types
Add possibility to choose channel type when creating a new channel
Several minor improvements everywhere
EkoChannelRepository
replaces the function channelsForFilter(:tags:)
with channelsForFilter(:includingTags:excludingTags:)
internal Realm objects are no longer exposed:
from this version there's no longer need for migrations when upgrading the SDK
actively purging Channel Memberships when new data comes from the server:
a new EkoChannelMembership
collection observation is needed in order to to trigger this
update channel filtering functionality with both including and excluding tags
remove channel videos
improve set channel tags UI/UX
improve MembershipListTableViewController
improve EkoMessagesTableViewController
EkoChannelRepository
replaces the function channelsForFilter(:tags:)
with channelsForFilter(:includingTags:excludingTags:)
remove markReadWithCompletion
function from EkoMessageEditor
. Use EkoChannelParticipation
start/stop reading functions instead
change channelsForFilter
behaviour:
a channel is now matched when it contains ANY tag listed in includingTags
, and contains NONE of the tags listed in excludingTags
. Previously a channel would match only if it contained ALL the listed tags. If you would like the old behaviour, please create your own filter on top of this method.
EkoChannelMembership
now behaves correctly
add Channel Membership List View
multiple minor improvements
Xcode 10.2 and Swift 5 support
Xcode 10.1 and iOS 12.1 SDK support
add isFlagByMeWithCompletion:
method in both EkoUserFlagger
and EkoMessageFlagger
EkoUserFlagger
and EkoMessageFlagger
now require, respectively, a EkoUser
and a EkoMessage
on initialization
improve flag feature
add back iOS 9 support
new Flag feature:
flags are reported to the Admin panel for moderator to see
EkoMessage
and EkoUser
expose a new NSUInteger
flagCount
property
Introducing EkoMessageFlagger
and EkoUserFlagger
objects, both of which have two methods:
flagWithCompletion:
unflagWithCompletion:
EkoChannel
's tags
property is now indexed (which results in slower writes, bigger realm database, and much faster searches)
remove EkoMessage
's EkoMessageEditor
shortcut: this way the EkoMessage is a pure model. If you'd like this feature back, please write your own extension/category/wrapper around it.
Add Flag feature in Sample App
remove completion blocks from EkoChannelParticipation
's start/stop reading methods
EkoChannelRepository
createChannel
requires a new tags
parameter (read the below for more info)
EkoChannelRepository
channelsForFilter
requires a new tags
parameter (read the below for more info)
automatically call startRead
upon re-gaining connection with the server if the connection was ever lost (the SDK will keep track of the channels currently being read until the app is killed)
improve Realm migration logic
introducing EkoChannel
's tags
property:
this property is an optional array of strings that the developer can use for whatever purpose.
Via the EkoChannelRepository
you can now:
create a channel with tags via the createChannel:displayName:type:metadata:users:
method
query/filter channels by tags via the channelsForFilter:tags:
method
set tags on existing channels (each call will overwrite the previous channels tags) via the setTagsForChannel:tags:completion:
method
improve channels cleanup on startup: at every startup, the data of channels where the user is not a member is deleted
internal fixes and enhancements
implement channel tags usage in sample app
implement channels filtering in sample app
Xcode 10 support
add possibility to get channels based on the user membership (all channels, channels where user is member, channels where user is not a member) via the EkoChannelRepository
's channelsForFilter:
add membership
property in EkoChannelMembership
object: the possible values are member
, none
(not member), and banned
;
expose the device user membership
above also in the associated EkoChannel
object via the new currentUserMembership
property;
expose totalUnreadCount
in the EkoChannelRepository
new live reading feature:
every user can now start and stop reading a channel (via the EkoChannelParticipation
's startReadingWithCompletion
/stopReadingWithCompletion
methods), this will automatically update the unread count for said channel when receiving new messages for that channel.
implement unread count
, both total and per channel, and membership type
usage in sample app
internal fixes and enhancements
Internal changes (for gathering statistics on sdk version usage)
Initial release
Android