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