Changelog

API / Behaviour Changes

  • 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.

Breaking Changes

  • 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.

API / Behaviour Changes

  • Add exponential backoff for socket reconnection. Now 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

Breaking Changes

  • 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.

API / Behaviour Changes

  • Add recorded video url API

  • Add a beta version of Upstra Video Player, a basic RTMP player for sample app live video.

API / Behaviour Changes

  • 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

API / Behaviour Changes

  • Fix issue where deleted comment was being shown from cache

API / Behaviour Changes

  • 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.

API / Behaviour Changes

  • 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.

API / Behaviour Changes

  • Fix issue where setRoles, setUserMetaData and setDisplayName was not working.

API / Behaviour Changes

  • Fix issue where user object in EkoComment was null.

  • Remove displayName property from EkoComment. You can access display name through user property.

API / Behaviour Changes

  • 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

Sample App Changes

  • Add UI to add & fetch comments

  • Add UI for reaction on comments

API / Behaviour Changes

  • Support for Xcode 12

API / Behaviour Changes

  • Fix bug on membership property on EkoChannelUserModel which has wrong result

API / Behaviour Changes

  • Fix bug on isEdited property on EkoMessage which has an unconsistent result

API / Behaviour Changes

  • No need to add zlib integration anymore

  • Support Cocoapod and Carthage installation

API / Behaviour Changes

  • Resolve crash when trying to access editedAt timestamp for message

  • Add isEdited property on EkoMessage to check if message has been edited

API / Behaviour Changes

  • Resolve allow display name nil and empty string on registerDevice

  • Support Xcode 11.6

API / Behaviour Changes

  • Resolve bug on conversation channel filtering

API / Behaviour Changes

  • Support Xcode 11.5

API / Behaviour Changes

  • Add getAllUsersSortedBy method to fetch list of users in EkoUserRepository.

  • Add searchUser method to search list of users with their display name in EkoUserRepository.

Sample App Changes

  • Add new UI for showing list of Users.

  • Refactor UI to show two tabs, one for list of users and another for channels/chat.

API / Behavior Changes

  • Support getMessage by messageId from EkoMessageRepository using getMessage(messageId) function.

Version 3.0 (2020-03-27)

Sample App Changes

  • 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.

API / Behavior Changes

  • 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 convertion 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.

API / Behavior Changes

  • Support getMessage by messageId from EkoMessageRepository using getMessage(messageId) function.

Version 2.7 (2020-03-17)

Sample App Changes

  • 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.

API / Behavior Changes

  • Add optimistic UI on the Reaction implementation.

Version 2.6.4 (2020-03-06)

API / Behavior Changes

  • Give safeguard for RLMRealm access of the properties in each object.

Version 2.6.3 (2020-02-27)

API / Behavior Changes

  • Protect setDisplayName of EkoClient to be able sent with empty userId.

Version 2.6.2 (2020-02-27)

API / Behavior Changes

  • Set EkoObject to be nil in any case if model not exist or invalidated.

Version 2.6.1 (2020-02-21)

API / Behavior Changes

  • 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.

Version 2.6 (2020-01-23)

Sample App Changes

  • 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.

API / Behavior Changes

  • Add setUserMetadata function inside EkoClient object for updating the current user meta data.

Version 2.5.1 (2020-01-17)

Sample App Changes

  • Fix crash that happens if show reaction with empty display name.

  • Fix reactions model is not auto removed when someone removes the reaction.

API / Behavior Changes

  • 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.

Version 2.5.0 (2020-01-14)

API / Behavior Changes

  • 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.

Sample App Changes

  • Add action sheet for displaying all of reactions the single message.

Version 2.4.0 (2020-01-07)

API / Behavior Changes

  • 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.

Sample App Changes

  • Add action sheet for adding and removing reactions on the message.

  • Add action sheet for displaying all of own reactions on the message.

Version 2.3.0 (2019-11-20)

API / Behavior Changes

  • 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.

Version 2.2.0 (2019-10-21)

API / Behavior Changes

  • 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.

Sample App Changes

  • 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.

Version 2.1.1 (2019-10-07)

Sample App Changes

  • Fix handling of deleted images

Version 2.1.0 (2019-09-27)

API / Behavior Changes

  • Add support for Xcode 11 and Swift 5.1

Version 2.0 (2019-09-18)

API / Behavior Changes

  • 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

Sample App Changes

  • 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

Breaking Changes

  • 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.

Version 1.10 (2019-06-21)

API / Behavior Changes

  • 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.

Sample App Changes

  • Adopt new push notification toggles.

  • Refactor various settings in new screens throughout the app.

Version 1.9 (2019-06-04)

API / Behavior Changes

  • 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

Sample App Changes

  • Add notifications support (note: your implementation will work with Eko Notifications only in Production, not in sandbox/development)

Version 1.8 (2019-05-15)

API / Behavior Changes

  • 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

Sample App Changes

  • 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

Version 1.7 (2019-04-26)

API / Behavior Changes

  • 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

Sample App Changes

  • update channel filtering functionality with both including and excluding tags

  • remove channel videos

  • improve set channel tags UI/UX

  • improve MembershipListTableViewController

  • improve EkoMessagesTableViewController

Breaking Changes

  • 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.

Version 1.6 (2019-04-12)

API / Behavior Changes

  • EkoChannelMembership now behaves correctly

Sample App Changes

  • add Channel Membership List View

  • multiple minor improvements

Version 1.5.2 (2019-04-01)

  • Xcode 10.2 and Swift 5 support

Version 1.5.1 (2019-02-27)

  • Xcode 10.1 and iOS 12.1 SDK support

Version 1.5 (2018-12-14)

API / Behavior Changes

  • add isFlagByMeWithCompletion: method in both EkoUserFlagger and EkoMessageFlagger

Breaking Changes

  • EkoUserFlagger and EkoMessageFlagger now require, respectively, a EkoUser and a EkoMessage on initialization

Sample App Changes

  • improve flag feature

Version 1.4 (2018-11-30)

API / Behavior Changes

  • 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)

Breaking Changes

  • 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.

Sample App Changes

  • Add Flag feature in Sample App

Version 1.3 (2018-11-02)

Breaking Changes

  • 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)

API / Behavior Changes

  • 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

Sample App Changes

  • implement channel tags usage in sample app

  • implement channels filtering in sample app

Version 1.1.1 (2018-10-29)

  • Xcode 10 support

Version 1.1 (2018-10-16)

  • 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

Version 1.0.1 (2018-07-10)

Internal changes (for gathering statistics on sdk version usage)

Version 1.0 (2018-07-10)

Initial release

Contents
Version 4.7.0 (2021-03-02)
API / Behaviour Changes
Version 4.6.0 (2021-02-15)
API / Behaviour Changes
Version 4.5.0 (2021-01-19)
API / Behaviour Changes
Version 4.4.2 (2021-01-15)
API / Behaviour Changes
Version 4.4.1 (2021-01-04)
API / Behaviour Changes
Version 4.4.0 (2020-12-22)
API / Behaviour Changes
Version 4.2.0 (2020-11-27)
API / Behaviour Changes
Version 4.0.2 (2020-11-03)
API / Behaviour Changes
Version 4.0.1 (2020-10-16)
API / Behaviour Changes
Version 4.0.0 (2020-09-10)
API / Behaviour Changes
Sample App Changes
Version 3.2.8 (2020-09-30)
API / Behaviour Changes
Version 3.2.7 (2020-08-24)
API / Behaviour Changes
Version 3.2.6 (2020-08-20)
API / Behaviour Changes
Version 3.2.5 (2020-08-19)
API / Behaviour Changes
Version 3.2.4 (2020-08-14)
API / Behaviour Changes
Version 3.2.3 (2020-07-21)
API / Behaviour Changes
Version 3.2.2 (2020-07-20)
API / Behaviour Changes
Version 3.2.1 (2020-06-08)
API / Behaviour Changes
Version 3.2 (2020-06-02)
API / Behaviour Changes
Sample App Changes
Version 3.1 (2020-04-09)
API / Behavior Changes
Version 3.0 (2020-03-27)
Sample App Changes
API / Behavior Changes
Version 2.8 (2020-04-09)
API / Behavior Changes
Version 2.7 (2020-03-17)
Sample App Changes
API / Behavior Changes
Version 2.6.4 (2020-03-06)
API / Behavior Changes
Version 2.6.3 (2020-02-27)
API / Behavior Changes
Version 2.6.2 (2020-02-27)
API / Behavior Changes
Version 2.6.1 (2020-02-21)
API / Behavior Changes
Version 2.6 (2020-01-23)
Sample App Changes
API / Behavior Changes
Version 2.5.1 (2020-01-17)
Sample App Changes
API / Behavior Changes
Version 2.5.0 (2020-01-14)
API / Behavior Changes
Sample App Changes
Version 2.4.0 (2020-01-07)
API / Behavior Changes
Sample App Changes
Version 2.3.0 (2019-11-20)
API / Behavior Changes
Version 2.2.0 (2019-10-21)
API / Behavior Changes
Sample App Changes
Version 2.1.1 (2019-10-07)
Sample App Changes
Version 2.1.0 (2019-09-27)
API / Behavior Changes
Version 2.0 (2019-09-18)
API / Behavior Changes
Sample App Changes
Breaking Changes
Version 1.10 (2019-06-21)
API / Behavior Changes
Sample App Changes
Version 1.9 (2019-06-04)
API / Behavior Changes
Sample App Changes
Version 1.8 (2019-05-15)
API / Behavior Changes
Sample App Changes
Version 1.7 (2019-04-26)
API / Behavior Changes
Sample App Changes
Breaking Changes
Version 1.6 (2019-04-12)
API / Behavior Changes
Sample App Changes
Version 1.5.2 (2019-04-01)
Version 1.5.1 (2019-02-27)
Version 1.5 (2018-12-14)
API / Behavior Changes
Breaking Changes
Sample App Changes
Version 1.4 (2018-11-30)
API / Behavior Changes
Breaking Changes
Sample App Changes
Version 1.3 (2018-11-02)
Breaking Changes
API / Behavior Changes
Sample App Changes
Version 1.1.1 (2018-10-29)
Version 1.1 (2018-10-16)
Version 1.0.1 (2018-07-10)
Version 1.0 (2018-07-10)