iOS SDK release notes

[7.2.0] - 2023-03-21

### Bug Fixes

  • [ROAD-3650] Fix loading AddressBooks when user has not presence

  • [ROAD-3630] Fix caller ID from Phonebook calls

  • [ROAD-3739] Improve documentation

### Chores

  • [ROAD-3746] Change info.plist version by Marketing_Version

### Code Refactors

  • [ROAD-3325] Add avatarUrl property from WebService

### Features

  • [ROAD-3601] Add new functions to update presence properties

  • [ROAD-3581] Add mute conference functionality

  • [ROAD-3445] Add simultaneous reduced strategy

  • [ROAD-3660] Improve retrieving ConferenceLog entries

  • [ROAD-1899] Add conference chat

[7.1.1] - 2023-03-01

### Bug Fixes

  • [ROAD-3539] Set “busy” state when user is on a call

  • [ITX-691] Change logic to order group participants

  • [ROAD-3609] Fix DisplayName on Incoming calls

### Code Refactors

  • [ROAD-3302] Improve presence request when retrieving addressbook

  • [ROAD-2413] Replace UserResolver by PresencesRepository

  • [ROAD-3478] Create socket connection manager

  • [ROAD-2988] Added PresencesServices to resolve DisplayName

  • [ROAD-3494] Replace starcream to new webSocket manager in QSS

  • [ROAD-3505] Replace socketIO to new webSocket manager in Janus

  • [ROAD-3526] Replace starscream to new manager in Wac module

[7.1.0] - 2023-02-08

### Bug Fixes

  • [ITX-660] Fix call error when device is suspended

  • [ROAD-3332] No progress call after network loss & reconnection

  • [ROAD-3334] Show error on call when the device has no connection

  • [ROAD-3347] Update chatsListView when send message from contactView

  • [ROAD-3390] Check if the user is a member or owner of the group

  • [ROAD-2106] Fix message status when user reads from another device

  • [ROAD-3458] Trim white spaces to displayName

### Code Refactors

  • [ROAD-3313] Create presence cache repository

  • [ROAD-3355] Create addressBooks cache repository

  • [ROAD-3400] Improve chat history retrieving process

  • [ROAD-3410] Refactor Chats name classes by QN prefix

  • [ROAD-3410] Resolve Bookmark name when fetching for groupChats

### Features

  • [ROAD-3311] Improve chats performance removing UserResolver

  • [ROAD-3212] Add new error code to revoke session

  • [ROAD-3440] Add chatId to userGroups

  • [ITX-685] Upgrade WebRTC version to 109.0.1

### BREAKING CHANGES

Presence object replaced by QNPresence`<br>`PresenceDelegate delegate replaced by QNPresenceDelegate`<br>`Presences repository replaced by QNPresencesRepository`<br>`presence(…) function replaced by getPresence(…)`<br>`updateMyPresence(…) function replaced by updateOwnPresence(…)

User object replaced by QNUser`<br>`Contact object replaced by QNContact`<br>`AgendaDelegate delegate replaced by QNAddressBooksDelegate`<br>`Agenda repository replaced by QNAddressBooksRepository`<br>`contacts(…) function replaced by getContacts(…)

fetchMessagesFromStore function returns a [ChatMessage]

Chats repository replaced by QNChatsRepository`<br>`Chat repository replaced by QNChatRepository`<br>`Chat…Class objects replaced by QNChat…Class

[7.0.1] - 2022-12-28

Bug Fixes

  • [ITX-549] Fix badge on group chat messages

  • [ROAD-3111] Fix creation of group chats when the socket is not yet authenticated.

  • [ITX-549] Mark read message when the socket is authenticated

Features

  • [ROAD-3135] Control logout errors

Tests

  • [ROAD-3140] Testing of unread chat messages count

[7.0.0] - 2022-12-02

Bug Fixes

  • [ROAD-2934] Count up to 99 unread messages after come to foreground

  • [ROAD-3137] Upgraded WebRTC library version to 96.0.0

  • [ROAD-3162] Remove group chat when room is deleted by owner

Chores

  • [ROAD-2833] Upgrade minimum version to 12.0

Code Refactors

  • [ROAD-2855] Initialize chats with unread messages count

BREAKING CHANGES

fetchUnreadMessagesCount of class Chat was removed, now the unreadMessagesCount observable starts with the current value

[6.5.1] - 2022-10-25

Chores

  • [ROAD-2629] Do not change documentation name with the version number

[6.5.0] - 2022-10-25

Bug Fixes

  • [ITE-457] Send leave, new and update participant actions

  • [ROAD-2808] Fix SwiftLint rules

Chores

  • [ROAD-2721] Fix fastlane command on install.sh

  • [ROAD-2747] Change swiftlint path

  • [ROAD-2197] Allow to generate sdk xcframework documentation

Code Refactors

  • [ITX-457] Organize group received XMPP chat messages by type

  • [ROAD-2808] Delete QuickStart app and refactor gitignore

  • [ROAD-2808] Refactor SDK structure

  • [ROAD-2808] Refactor Modules structure

  • [ROAD-2808] Remove Sippo project

Documentation improvements

  • [ROAD-2721] Change readme to include Git-Cliff

Features

  • [ITX-645] Make Ringing Strategy enum equatable

  • [ROAD-2747] Add ‘Missed calls’ service implementation

  • [ROAD-2629] Generate release from Jenkins

[6.4.1] - 2022-09-13

Bug Fixes

  • [ROAD-2406] Authenticate socket once after reconnection

[6.4.0] - 2022-08-31

Features

  • [ROAD-2401] Allow to change the ringing group strategy

[6.3.2] - 2022-08-24

Bug Fixes

  • [ROAD-2590] Add missing conference error with unhold error

  • [ROAD-2361] Fix broken tests

  • [ROAD-2333] Reconnect after websocket connection errors

Chores

  • [ROAD-2115] Update Quick, Nimble and execute linter and tests on each PR

[6.3.1] - 2022-07-11

Bug Fixes

  • [ROAD-2305] Configure chat room after join it

[6.3.0] - 2022-06-21

Chores

  • [QUOBDEV-1830] Include configuration to use git-cliff as new changelog generation tool

Features

  • [ROAD-1682] Allow to reorder user group participants

[6.2.5] - 2022-06-07

Bug Fixes

  • [ROAD-2249] Use RxSwift version 6.2 and compile project with XCode 13.2.1

Reverts

  • Revert “chore: [ROAD-2197] Allow to generate sdk xcframework documentation”. This reverts commit 855ef0480ea118294b7470eef62610647d69aa19.

[6.2.4] - 2022-05-19

Chores

  • [ROAD-2119] Add link with commit message format explanation

  • [ROAD-2197] Allow to generate sdk xcframework documentation

[6.2.3] - 2022-04-26

Chores

  • [QUOBDEV-1924] Modify the build lane in Fastlane to use xcframeworks

  • [QUOBDEV-1926] Modify the package lane in order to use xcframeworks

[6.2.2] - 2022-04-22

Bug Fixes

  • [QA-2283] Send participant active state in group chats

Chores

  • [QUOBDEV-1335] Update RxSwift to 6.5.0 version

  • [QUOBDEV-1870] Update Quick to 4.0.0 version

  • [QUOBDEV-1883] Update deployment target to version 11

  • [QUOBDEV-1882] Update WebRTC to M94 version

  • [QUOBDEV-1882] Use xcframeworks instead of fat frameworks

  • [QUOBDEV-1891] Update Fastlane version in order to be able to use xcframeworks in Carthage actions

  • [QUOBDEV-1892] Modify install.sh script to use .xcframeworks instead of .frameworks.

  • [QUOBDEV-1893] Add a lane for create a new version tag in Fastfile

  • [QUOBDEV-1894] Fix bootstrap lane and make it use xcframeworks

[6.2.1] - 2022-03-23

Bug Fixes

  • [QA-2967] Add correct reference when adding the room delegate

Documentation Improvements

  • [QUOBDEV-1803] Update Cartfile to include the explanation about why the SDK uses precompiled WebRTC binaries as dependency

[6.2.0] - 2022-03-15

Bug Fixes

  • [QA-2899] Prevent concurrent read in Resources dictionary

  • [QA-2950] Change the URL session used to make http requests to be ephemeral

  • [QA-2899] Prevent concurrent write in RequestCache class

  • [ITX-511] Add bookmarks manager with a semaphore to make bookmarks operations secuentially

Chores

  • [QUOBDEV-1743] Create a git hook for commit messages

Code Refactors

  • [QUOBDEV-1777] Refactor how group chats are created

Features

  • [ROAD-2015] Do not expose unnamed group chats

  • [QUOBDEV-1775] Set XMPP TCP socket with TLS policy as preferred

BREAKING CHANGES

The method joingGroupChat in Chats service is now asynchronous. The method to change the name of a group chat and the events and callbacks that notify when this name is modified have been removed from GroupChatActions class.

[6.1.2] - 2022-01-31

Bug Fixes

  • [QA-2863] Remove outdated chats before adding new ones

  • [QA-2848] Ignore unresolved group participants to initialize participants with valid users

  • [ITX-528] Return chats with the last chat message initialized

Chores

  • [QUOBDEV-1669] Add script to generate SDK binaries

  • [QUOBDEV-1668] Update readme

Code Refactors

  • [QUOBDEV-1529] Remove anonymous login

  • [QUOBDEV-1717] Add reactive extensions for fetch and publish bookmarks

BREAKING CHANGES

The anonymous login case has been removed from the Authentication options of the SippoServer class and is not possible to do anonymous login from the AuthService anymore. The events newChat and new ConferenceChat do not emit the optional ChatMessage associated to the Chat anymore. This information can be obtained via the lastContentMessage attribute from the Chat itself.

[6.1.1] - 2021-12-21

Bug Fixes

  • [ITX-571] Revert changes made to identify last message in one chat

[6.1.0] - 2021-12-15

Bug Fixes

  • [ITX-567] Make request cache dictionaries thread safe

[6.0.0] - 2021-11-26

Chores

  • [QUOBDEV-1619] Update tuist version to 1.48.1

Features

  • [FMAX-159] Allow compiling with Xcode 13

  • [QUOBDEV-1511] Include the new AuthProvider and the former Provider model in the session service.

BREAKING CHANGES

The method to fetch the providers has been modified, it now returns a list of the new Provider model. A method to fetch the AuthProvider has been added.

[5.1.4] - 2021-10-08

Bug Fixes

  • [ITX-550] Disable push notifications for chat correctly

Chores

  • [ITX-568] Update dependencies to allow compiling with Xcode 12.5.1

Code Refactors

  • [QUOBDEV-1458] Change the format used in loggers to print the line with the function name

[5.1.3] - 2021-09-28

Bug Fixes

  • [QA-2618] Consider more error types when transforming to ResourceError

  • [QA-2626] Delete session info when restore is not possible because the session is no longer valid

  • [QA-2628] Fix typo in attended transfer permission

  • [ITX-549] Tab bar’s badge counter of new messages is not working correctly.

[5.1.2] - 2021-08-19

Bug Fixes

  • [ITX-531] Chat messages are not retrieved in the correct order when loading messages history

[5.1.1] - 2021-08-05

Chores

  • [QUOBDEV-1298] Remove RX’s debug messages

  • [QUOBDEV-1309] Add verbose level to SippoServer logger

[5.1.0] - 2021-07-22

Bug Fixes

  • [ITX-540] Make the access to the Sippo-Server request store sequential

Features

  • [ROAD-1763] Add code error 409 as an error type

[5.0.7] - 2021-07-16

Bug Fixes

  • [FMAX-155] Map error when fetching the conference log entries

[5.0.6] - 2021-07-09

Bug Fixes

  • [FMAX-154] Change semaphore management used when connecting to Janus in order to release it if any scape condition is matched

[5.0.5] - 2021-07-07

Bug Fixes

  • [FMAX-150] Add existAnyConferenceWithInvitation method as part of public callbacks API

Chores

  • [QUOBDEV-1275] Add a script to tag a version and generate the related changelog

[5.0.4] - 2021-06-23

Bug Fixes

  • [ITX-530] Catch the error for the request to get the contact associated to a user when resolving the display name

[5.0.3] - 2021-06-17

Bug Fixes

  • [QA-2370] Get the to field from the invite carbon message and avoid to create a new chat if it is already in the list

Code Refactors

  • [QUOBDEV-1249] Remove unused conference errors

[5.0.2] - 2021-06-07

Bug Fixes

  • [ROOM-286] Manage concurrency problems when fetching chat messages

[5.0.1] - 2021-06-07

Bug Fixes

  • [QA-2079] Retain AuthService

  • [QA-2085] Check socket response as String

Backward compatibility announcement

Please take into account the announcement stated here: Backward compatibility 5.0

[5.0.0] - 2021-03-25

New features

  • Do not show group chats without name in the chat list.

  • Allow compilation with Xcode 13

  • Add support for the new provider model.

  • (Refactor)Change the format used in loggers to print the line with the function name.

  • Include Keycloak login support.

  • Set XMPP TCP socket with TLS policy as preferred.

Bug Fixes

  • Wrong timestamp assigned to chat messages.

  • Chats are reordered without new updates.

  • Blank title is shown in the chat list when the user resolution fails.

  • The app crashes (occasionally) when trying to retrieve the list of chats.

  • XMPP reconnection fails when the app comes from background.

  • Disable push notifications for chat correctly.

  • The chat notifications in the footer are not working correctly.

  • Users with groups with inexistent participants cannot see any type of contact.

Known Issues

  • Background task when connecting the session is not being correctly finished if an error occurs (QA-2786)

  • Sockets remain open when the app goes to background during login process (QA-2599)

  • The chat that is created from UCIOS doesn’t appear to the creator of the same on the web until he reloads the page (QA-2223)

  • Instant audios and videos between Web and native app are not received (QA-1662)

  • Chat messages are not retrieved when they arrived while displaying chat list

  • Chats are not ordered according the time they where sent when you kill and open again the app

[4.4.0] - 2021-09-17

Released 17th Sep 2021

New features and changes

  • Use WebSocket instead of Socket.io for WAC connection

  • Expose the groupId for contacts with source group

  • Add code error 409 as an error type

Bug fixes

  • Add existAnyConferenceWithInvitation method as part of public callbacks API

  • Change semaphore management used when connecting to Janus in order to release it if any escape condition is matched

  • Match MAM messages with element id

  • Check socket response as String

  • Retain AuthService

  • Manage concurrency problems when fetching chat messages

  • Get the to field from the invite carbon message and avoid to create a new chat if it is already in the list

  • Catch the error for the request to get the contact associated to a user when resolving the display name

  • Add existAnyConferenceWithInvitation method as part of public callbacks API

  • Change semaphore management used when connecting to Janus in order to release it if any scape condition is matched

  • Map error when fetching the conference log entries

  • Make the access to the Sippo-Server request store sequential

Breaking changes

  • The possible sources for a contact have been changed. The agenda service has now its own Source class to specify which contacts have to be fetched.

[4.3.0] - 2021-05-14

New features and changes

  • Add events for expired and cancelled alerts

  • Add param to filter expired alerts when fetching them

  • Allow to fetch active alerts and accepted alerts finished in a certain time interval

  • Resolve “from” field in message to display name

  • Increase the timeout for invitation request from 60 to 120 sec

  • Add code “480” as a available response for QSS invites

Bug fixes

  • Avoid XMPP reconnections if the client state is new (QA-1957)

  • Return group identifier if it does not exist when resolving a conference log entry (QA-1930)

Technical improvements

  • Add a new rule for building paths with query params (QA-1956)

[4.2.0] - 2021-01-25

New features and changes

  • Breaking change: the Invitations service for managing invitation request and all related classes as InvitationsDelegate, SippoInvitationRequest,… are not longer available.

  • Breaking change: the property isAnswerToInvitationRequest in SippoConference and RxSippoConference has been removed.

  • Breaking change: “invite” method does not have a replyOf parameter any more.

  • Breaking change: the property inviteRequest in SippoInvitationInfo and InvitationInfo has been removed.

  • Breaking change: SippoParticipantInfo and SippoCandidateInfo do not have a property “user” any more. Instead, a new property “participant” has been added that includes all the information about the participant or the candidate.

  • Breaking change: the method to fetch the conference entries in Conferences does not receive a “since” parameter any more. Now, a time range can be specified using the parameters “before” and “after”. Besides that, it can also be specified whether the entries have to be obtained in ascending or descending order of their creation date.

  • Removed support for w3c-contacts-api capability

  • Support to oAuth “confidential client” as described in RFC-6749

  • Update tuist files

  • Drop invitation request support

  • Use a behaviour for UserExpelled observable

  • Added user-select-group capability

  • Added method to join a group chat with its identifier

  • Add “archive” method to chat

  • Expose XMPP port as a client option

  • Use createdAtBefore and createdAtSince to fetch conference entries

  • Expose candidates and participants as Participant

  • Add startChat capability

  • Expose XMPP client state in chats service

  • Adapt the registration of chat notifications to last changes

  • Expose current session token

  • Add method to fetch AddressBooks

  • Expose the property “to” in SippoTransfer as a participant instead of as a string

  • Changes group owner when current owner leaves the chat

  • Notify affiliation changes in group chat

  • Make ChatMessage conform to Codable

  • Add DTMF support in conference

  • Fetch leave/join messages from MAM

  • Update dependencies due to Swift 5.2

  • Expose 1-1 and groups chats as a Chat class

  • Expose incoming invitation identifier

  • Expose method to check active invites

  • Expose conference state

  • Fetch participant contains media shared by them

  • Set last message onces the group is fetched

  • Expose methods to enable/disable push notifications in chats

  • Expose “status” field in Presence

  • Added isPermissionGranted to Sessions

  • Added presence for User method in Presences

  • Added isAuthenticated property to Sessions

  • Remove “optional” from wrapper token field for better performance

  • Transform messages to ChatMessages

  • Added action case to ChatMessage

  • Get unread messages

Bug fixes

  • Fix CocoaLumberJack version to 3.6.2 (SIPPOIOS-264)

  • Avoid parsing errors when the transfer state in a ConferenceEntry has not one of the expected valued (SIPPOIOS-262)

  • Subscribe to room destroyed and invitation canceled events in JNConferenceState (SIPPOIOS-262)

  • Use concat instead of merge when resolving the conference log entries fetched (SIPPOIOS-257)

  • Use a semaphore to synchronize connect method (SIPPOIOS-252)

  • Parse groupId from body instead of param in delete event (SIPPOIOS-253)

  • Expose JNConferenceState in Conference (SIPPOIOS-241)

  • Emit destroyed event when leave conference is completed (SIPPOIOS-226)

  • Configure group chats only when user is the owner (SIPPOIOS-225)

  • Save token in keychain with kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly (SIPPOIOS-224)

  • Wait until joined event to send invites (SIPPOIOS-220)

  • Make services lazy on success (SIPPOIOS-219)

  • Filter OneToOne chats with non-existent user (SIPPOIOS-205)

  • Return current page from history to future searchs (SIPPOIOS-201)

  • Send chat invites one by one (SIPPOIOS-200)

  • Use contact phone as first option for invites (SIPPOIOS-196)

  • Filter events notifying that a group chat has been deleted if there is no info about the group

  • Filter conference chats from user’s group chats

  • Leave room before disconnecting from the SFU

  • Filter chats conference when fetched

  • Use sync queue to access history store

  • Change User from Struct to Class due to mutations

  • Change value returned in Publisher.isMuted