SkylinkSDK for iOS 2.0 features Screen sharing functionality as well as an upgrade to WebRTC.framework.
What's New
Media: Create, Remove
- Local media is now started independently of connecting to the room.
- Able to now start local media for Screen.
- Able to now start local media using a user provided video capturer implementation and specific media resolution
- Disconnecting from the room no longer disposes of local media.
- User can call the destroyLocalMediaWithMediaID API to dispose of a specific local Media
- A new config property isMultiTrackCreateEnable to enable multi media creation has been added.
Media: Modify
- Modify local media by providing a media id, support mute/unmute for audio and video, start/stop for video and screen share.
Media: State
- Media state has 4 options: ACTIVE, MUTED, STOPPED, UNAVAILABLE
Media: Get
- Get a specific SKYLINKMedia object by media id.
- Able to get all available media device names, current video device, current capture format and all supported capture formats.
Media: Video Resolutions
Video resolutions are now returned in 2 ways. They can be returned manually via the method callback while automatic reports can be returned in the SKYLINKConnectionMediaDelegate.
Get input and received video resolution by media id, get sent video resolution by media id and remote peer id
- Set input video resolution by media id
- DEFAULT_VIDEO_FPS has replaced MAX_VIDEO_FPS
- A new property isReportVideoResolutionOnVideoChange to activate automatic stats receiving has been added.
Room: Connect/ Disconnect
- Connecting to room will not, on its own, activate any media.
- Disconnecting from room will not remove any existing media. The user can directly reconnect to the room with existing media.
- The room connection delegate method has been separated into two different methods, one for successful connection, and one for failure to connect.
- Automatic reconnection by the SDK to a room if it fails to connect or gets disconnected due to unexpected reasons (e.g. network errors) is set by default in SKYLINKConnectionConfig.
SKYLINKConnection: init
- Properties in SKYLINKConnectionConfig need to be set before initialising the SKYLINKConnection. After SKYLINKConnection is initialised, any subsequent config setting will be discarded.
- init method for the SKYLINKConnection instance no longer requires appKey
Room: Information
- The callbacks didReceiveWarning and didReceiveUserInfo have been deprecated. Please use didReceiveInfoWithSkylinkInfo, didReceiveWarningWithError and didReceiveError instead.
- New property roomSize to set the room size with the below options has been added. It is recommended to set this on SKYLINKConnectionConfig. These sizes correspond to the following number of users:
- EXTRA_SMALL: Up to 2 users
- SMALL: Up to 4 users
- MEDIUM: Up to 5 users
- LARGE: Up to 8 users
- EXTRA_LARGE: Currently defaults to LARGE capacity (Up to 8 users). Increased capacity will be available with a future version.
- New property networkTransport for setting/getting networkTransport, and SkylinkAction for setting/getting timeout.
User
A specific peer present in the room can now be retrieved via peer ID.
refreshConnection has been replaced by refreshConnectionWithRemotePeerId which has a new parameter doIceRestart, that can be used to specify whether this restart is an ICE restart
On calling refreshConnectionWithRemotePeerId, the remote peer will get a callback didRefreshRemotePeerConnection
If a data connection is opened with a remote peer, the local peer will get the callback didOpenRemotePeerDataConnection
In case of an error with the remote peer connection, the local peer will get the callback didErrorForRemotePeerConnection
When connecting with /disconnecting from a remote peer, new callbacks didReceiveRemotePeerInRoomWithRemotePeerId, didReceiveRemotePeerLeaveRoom, didConnectWithRemotePeer and didDisconnectWithRemotePeer have been added to notify the connection/ disconnection of a remote peer to/from a room and the connection/ disconnection of a remote peer to/from the other peers respectively. These have replaced the functionality of the previous callbacks didJoinPeer and didLeavePeerWithMessage.
- Media state like audioMuted/videoMuted can be retrieved from SkylinkMedia using the property skylinkMediaState.
FileTransfer
- Files received from a remote peer are saved in the /tmp folder and a corresponding local URL link is provided.
- The APIs for accepting and rejecting a file transfer have been separated into: acceptFileTransferWithFileName and rejectFileTransferFromRemotePeerId respectively.
Statistics
- Can get sent/received transfer speed using media id (and remote peer id) with the getSentTransferSpeedByMeidaId and getReceivedTransferSpeedByMediaId APIs
- Can get sent/received WebRTC stats using media id (and remote peer id) with the getSentWebRtcStatsWithMediaId and getReceivedWebRtcStatsWithMediaId APIs
Recording
- Recorded video links will now only be sent directly to the registered email on the Temasys console. This Notification Email can be configured on the Recording Configuration tab under Account Settings.
General changes
- New functions setAudioVideoReceiveConfig and setAudioVideoSendConfig where you can set the Audio/ Video receive and send conditions for a SKYLINKMedia(s) have been added.
- Added a new property hasP2PMessaging which can enable/disable P2P messages in a room.
- Added a new property isMirrorLocalFrontCameraView for front camera, which checks for a mirrored local front camera view.
Keys for enableSTUN, TURN, HOST, transport, enableDNSPreSolving, enableIPV6Filter, disableIceHostSolving, audio codec, previously under the advancedSettingKey function, have now been moved outside to corresponding properties.
- Changes have been made to the names and parameters of multiple Public APIs as follows:
Known Issues
- iOS restrictions around screen sharing prevent screen capture outside of the current application.
- System screen recorder may, on occasion, require a device restart.
- iOS does not currently provide VP9 Video Codec support.