Skip to content

Releases: cbajapan/swift-fcsdk-ios

v4.3.1-rc1

25 Jun 05:24
Compare
Choose a tag to compare
v4.3.1-rc1 Pre-release
Pre-release

Release Candidate 4.3.1-rc1

This article describes changes in version 4.3.1-rc1 of FCSDKiOS

Overview

We fixed a bug where remote video scaling didn't represent local self view aspect ratio.

v4.3.1-beta1

20 Jun 00:51
Compare
Choose a tag to compare
v4.3.1-beta1 Pre-release
Pre-release

Version 4.3.1-beta1

This article describes changes in version 4.3.1-beta1 of FCSDKiOS

Overview

We fixed a bug where DSCP flags may not have been set during outbound calls.

v4.3.0

18 Jun 14:30
Compare
Choose a tag to compare

Version 4.3.0

This article describes changes in version 4.3.0 of FCSDKiOS

Overview

Version 4.3.0 has reached a new milestone in moving to a Swift Concurrency Complete Checking environment. We have also improved the performance and speed of video rendering. 4.3.0 also introduced some new Public API's and also has deprecated/removed some old ways of doing things in a less safe Swift Concurrency environment.

The enabling of Audio and Video DSCP values.

These 3 methods have been introduced into the UC object of FCSDKiOS. Notice that in Swift they are parameters with default values meaning that they if you choose to use them, they may be initialized with the desired RTCPriority values. In Objective-C default parameters are not supported so, we left the previous 3 APIs for UC initialization in order to not break your projects and still allow DSCP Prioritization.

    @objc public class func uc(
        withConfiguration: String,
        audioDSCPPriority: CBARTCPriority = .none,
        videoDSCPPriority: CBARTCPriority = .none,
        delegate: ACBUCDelegate?
    ) async -> ACBUC {}
    
    @objc public class func uc(
        withConfiguration: String,
        stunServers: [String] = [],
        audioDSCPPriority: CBARTCPriority = .none,
        videoDSCPPriority: CBARTCPriority = .none,
        delegate: ACBUCDelegate?
    ) async -> ACBUC {}
    
     @objc public class func uc(
        withConfiguration: String,
        stunServers: [String] = [],
        audioDSCPPriority: CBARTCPriority = .none,
        videoDSCPPriority: CBARTCPriority = .none,
        delegate: ACBUCDelegate?,
        options: ACBUCOptions
    ) async -> ACBUC {}

What is DSCP Prioritization?

DSCP stands for Differentiated Services Code Point. It is a field in the IP header that is used to classify and manage network traffic to provide quality of service (QoS) in computer networks.

To begin let's have a discussion on P2P Connections. During a Peer-to-Peer connection information about the other user is discovered this allows the callee and caller to transmit information to each other using the User Datagram Protocol. WebRTC uses UDP to transmit RTP Packets to the intended target. For certain Networking situation a user may decide that they need to mark RTP Packets with an Assured Forwarding Network Priority. When the user sets a preferred priority we are requesting for WebRTC to mark the aforementioned headers with the preferred priority in order for the network to know what to do with each packet's Quality of Service. It is important to note that Network Configuration needs to be taken into consideration in order to ensure that the Internet Protocol actually forwards the QoS Header. It is up to the engineering team to ensure their networking environment is properly set up.

Setting WebSocket Connection Timeout

As we move toward a Swift 6 concurrency safe environment we are asking developers to please move to our new APIs. This includes the setting of the WebSocket Connection Timeout on the startSession() method instead of setting it on the Constants Object. Please notice the following APIs.

     /// Starts the call session async without a callback
     /// - Parameter timeout: WebSocket Connection Timeout
     @objc public func startSession(timeout: Float = 7.0) {}
    
    /// Starts the async call session. A callback is available on completion in Objective-C
    /// - Parameter timeout: WebSocket Connection Timeout
    @objc public func startSession(timeout: Float = 7.0) async {}

Removal Of Deprecated Code

Please notice the removed deprecated code and introduce the new methods into your projects. Below you will notice the deprecated method and the available method. You need to use the available method in your projects now.

Setting the camera position

    @available(*, deprecated, message: "Please use async version, This method will be removed in FCSDKiOS 4.3.0")
    @objc public func setCamera(_ position: AVCaptureDevice.Position) {}
    
    @MainActor
    @objc public func setCamera(_ position: AVCaptureDevice.Position) async {} 

Getting the recommended video capture settings from the Phone Object

    @available(*, deprecated, message: "Please use the ACBClientPhone object to get the recommended capture settings, This class will be removed in FCSDKiOS 4.3.0")
    public final class ACBDevice: @unchecked Sendable {
        @MainActor
        @objc public func recommendedCaptureSettings() -> [ACBVideoCaptureSetting] {}
    }
    
    // Phone Object
    @available(*, deprecated, message: "Please use async version, This method will be removed in FCSDKiOS 4.3.0")
    @objc public func recommendedCaptureSettings() -> [ACBVideoCaptureSetting]? {}
    
    //Please use this method
    @objc public func recommendedCaptureSettings() async -> [ACBVideoCaptureSetting]? {}

Creating a call

     @available(*, deprecated, message: "use createCall() async instead. This method will be removed in FCSDKiOS 4.3.0")
     @objc public func createCall(
        toAddress remoteAddress: String,
        withAudio audioDirection: ACBMediaDirection,
        video videoDirection: ACBMediaDirection,
        delegate: ACBClientCallDelegate
    ) -> ACBClientCall? {}
    
    //Please use one of these available methods
    @objc public func createCall(
        toAddress remoteAddress: String,
        withAudio audioDirection: ACBMediaDirection,
        video videoDirection: ACBMediaDirection,
        delegate: ACBClientCallDelegate
    ) async -> ACBClientCall? {}

Answering a call

     @available(*, deprecated, message: "use answer(withAudio:) async instead, Future versions of FCSDKiOS will remove this method")
     @objc public func answer(withAudio audioDir: ACBMediaDirection, andVideo videoDir: ACBMediaDirection) {}

     //Please use this method
     @objc public func answer(withAudio audioDir: ACBMediaDirection, andVideo videoDir: ACBMediaDirection) async {}

Holding a call

    @available(*, deprecated, message: "Please use async version, This method will be removed in FCSDKiOS 4.3.0")
    @objc public func hold() {}
    
    //Please use this method
    @objc public func hold() async {}

Resuming a call

    @available(*, deprecated, message: "Please use async version, This method will be removed in FCSDKiOS 4.3.0")
    @objc public func resume() {}
    
    //Please use this method
    @objc public func resume() async {}

Creating a remote buffer view

     @available(*, deprecated, message: "Please use metal by default method as we render on metal rergardless, This method will be removed in FCSDKiOS 4.3.0")
     @MainActor
     @objc public func remoteBufferView(
        scaleMode: VideoScaleMode = .horizontal,
        shouldScaleWithOrientation: Bool = false,
        shouldRenderOnMetal: Bool = true
    ) async -> UIView? {}
    
     //Please use this method
     @MainActor
     @objc public func remoteBufferView(
        scaleMode: VideoScaleMode = .horizontal,
        shouldScaleWithOrientation: Bool = false
    ) async -> UIView? {}

Creating a local buffer view

     @available(*, deprecated, message: "Please use metal by default method as we render on metal rergardless, This method will be removed in FCSDKiOS 4.3.0")
     @MainActor
     @objc public func localBufferView(
        scaleMode: VideoScaleMode = .horizontal,
        shouldScaleWithOrientation: Bool = false,
        shouldRenderOnMetal: Bool = true
    ) async -> UIView? {}
    
    //Please use this method
     @MainActor
     @objc public func localBufferView(
        scaleMode: VideoScaleMode = .horizontal,
        shouldScaleWithOrientation: Bool = false
    ) async -> UIView? {}

Enabling audio on a call

     @available(*, deprecated, message: "Please use async version, This method will be removed in FCSDKiOS 4.3.0")
     @objc public func enableLocalAudio(_ isAudioEnabled: Bool) {}
    
     //Please use this method
     @objc public func enableLocalAudio(_ isAudioEnabled: Bool) async {}

Enabling video on a call

    @available(*, deprecated, message: "Please use async version, This method will be removed in FCSDKiOS 4.3.0")
    @objc public func enableLocalVideo(_ isVideoEnabled: Bool) {}
    
    //Please use this method
    @objc public func enableLocalVideo(_ isVideoEnabled: Bool) async {}

Ending a call

    @available(*, deprecated, message: "Please use async version, This method will be removed in FCSDKiOS 4.3.0")
    @objc public func end() {}
    
    //Please use this method
    @objc public func end() async {}

Creating a UC Object

    @available(*, deprecated, message: "Will be removed in future versions of FCSDKiOS, use the Async version instead.")
    @objc public class func uc(
        withConfiguration: String,
        delegate: ACBUCDelegate?
    ) -> ACBUC {}
    
    //Please use one of these available methods
    @objc public class func uc(
        withConfiguration: String,
        delegate: ACBUCDelegate?
    ) async -> ACBUC {}

New Deprecations

The Following is a list of newly deprecated code that will be removed in future versions of FCSDKiOS

    @available(*, deprecated, message: "Please use start session with websocket timeout as a parameter")
    /// Starts the call session async without a callback
    @objc public func startSession() {}
    
    @available(*, deprecated, message: "Please use async start session with websocket timeout as a parameter")
    ///Starts the async ca...
Read more

4.2.10-beta1

02 Apr 15:26
Compare
Choose a tag to compare
4.2.10-beta1 Pre-release
Pre-release

Version 4.2.10-beta1

This article describes changes in version 4.2.10-beta1 of FCSDKiOS

Overview

Enabled DSCP

Release 4.2.9

02 Apr 14:03
Compare
Choose a tag to compare

Version 4.2.9

This article describes changes in version 4.2.9 of FCSDKiOS

Overview

Minor scaling fixes
Using WebRTC m122
Improved Metal Rendering
Improved Conformance to the Sendable Protocol
Improved Memory Management
Improved Rendering
Improved State Handling
Improved SDP Parsing
Several Bug Fixes

Version 4.2.9-beta3

14 Mar 15:44
Compare
Choose a tag to compare
Version 4.2.9-beta3 Pre-release
Pre-release

Version 4.2.9-beta3

This article describes changes in version 4.2.9-beta3 of FCSDKiOS

Overview

Minor scaling fixes

Version 4.2.9-beta2

14 Mar 15:41
aa530f3
Compare
Choose a tag to compare
Version 4.2.9-beta2 Pre-release
Pre-release

Version 4.2.9-beta2

This article describes changes in version 4.2.9-beta2 of FCSDKiOS

Overview

Improved Metal Renderering
Improved Conformance to the Sendable Protocol
Using WebRTC m122

v4.2.9-beta1

12 Mar 02:40
Compare
Choose a tag to compare
v4.2.9-beta1 Pre-release
Pre-release

Version 4.2.9-beta1

This article describes changes in version 4.2.9-beta1 of FCSDKiOS

Overview

Improved Memory Management
Improved Rendering
Improved State Handling
Improved SDP Parsing

V4.2.8

04 Feb 22:35
de3dc7a
Compare
Choose a tag to compare

Version 4.2.8

This article describes changes in version 4.2.8 of FCSDKiOS

Overview

Version 4.2.8 has added the missing PrivacyInfo.xcprivacy file. The following are bits of info FCSDKiOS needs to make your application function properly.

We collect the iOS Version that you are using for App Functionality

We collect the Device Model that you are using for App Functionality

v4.2.7

09 Jan 07:46
2345dc3
Compare
Choose a tag to compare

Version 4.2.7

This article describes changes in version 4.2.7 of FCSDKiOS

Overview

Version 4.2.7 has several bug fixes and performance improvements. Below is a list of bug fixes.

Improvements to media direction management

Improvements to virtual background rendering

Fixed a bug bluring the background of a preview video created a frozen background image.

Fixed a bug where resource retention was not released at the end of a call

Fixed a bug where iPad would not reconnect to the network if the deprecated reconnected call was being used during a network loss.

Fixed a bug where hold/resume was not occurring if the app was backgrounded and then foregrounded