本文にスキップする
Note
このドキュメントは翻訳されていません。

Migrating from PlanetKit 4.4 to 5.5

This guide provides detailed steps and considerations for migrating from PlanetKit 4.4 to PlanetKit 5.5.

Requirements

Swift Package Manager

If you are using Swift Package Manager (SPM), add the following repository URL to your Xcode project's package dependencies.

For more information on how to add a package dependency, see Apple Developer documentation.

CocoaPods

If you want to keep using CocoaPods, change the existing PlanetKit-iOS or PlanetKit-macOS Pod to PlanetKit-SDK-Apple.

The following Podfile is an example.

## PlanetKit 5.5 or higher
target 'MyApp' do
pod 'PlanetKit-SDK-Apple', '~> 5.5', :source => 'https://github.com/line/planet-kit-cocoapods-specs.git'
end

Migration

Breaking change Improve camera control

PlanetKit has been enhanced to turn on the camera only when sending data to Planet Cloud.

API changes

Changed
  • PlanetKitCall class 1-to-1 call

    PreviousPlanetKit 5.5
    func setMyVideoReceiver(_ videoReceiver: PlanetKitVideoOutputDelegate)
    func resetMyVideoReceiver()
    var myVideoStream: PlanetKitVideoStream { get }
  • Rename PlanetKitVideoCaptureDevice to PlanetKitVideoCaptureDeviceInfo 1-to-1 callGroup call

  • PlanetKitCameraManager class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitCall.startPreview()func startPreview(delegate: PlanetKitVideoOutputDelegate)
    PlanetKitCall.stopPreview()func stopPreview(delegate: PlanetKitVideoOutputDelegate)
    PlanetKitMakeCallSettingBuilder.withCustomCameraKey(camera:)
    PlanetKitVerifyCallSettingBuilder.withCustomCameraKey(camera:)
    PlanetKitJoinConferenceSettingBuilder.withCustomCameraKey(camera:)
    func setCustomCamera(_ camera: PlanetKitCustomCamera)
    PlanetKitCamera.isStartedvar isStarted: Bool { get }
    PlanetKitCamera.currentDevicevar currentDeviceInfo: PlanetKitVideoCaptureDeviceInfo? { get }
    PlanetKitCamera.cameraPresetvar preset: PlanetKitCameraPreset? { get }
    PlanetKitCamera.cameraPositionvar position: PlanetKitCameraPosition { get }
    PlanetKitCamera.cameraFrameRatevar frameRate: PlanetKitFrameRate? { get }
    PlanetKitCamera.change(device:)func change(deviceInfo: PlanetKitVideoCaptureDeviceInfo)
    PlanetKitCamera.switchPosition()func switchPosition()
    PlanetKitCamera.addInterruptReceiver(_:)func addInterruptReceiver(_ interruptReceiver: PlanetKitCameraInterruptDelegate
    PlanetKitCamera.removeInterruptReceiver(_:)func removeInterruptReceiver(_ interruptReceiver: PlanetKitCameraInterruptDelegate)
    PlanetKitCamera.isCameraAvailablestatic var isCameraAvailable: Bool { get }
    PlanetKitCamera.devicesvar deviceInfos: [PlanetKitVideoCaptureDeviceInfo] { get }
    PlanetKitCamera.addDeviceChangeDelegate(_:)func addDeviceChangeDelegate(_ delegate: PlanetKitCameraDeviceChangeDelegate)
    PlanetKitCamera.removeDeviceChangeDelegate(_:)func removeDeviceChangeDelegate(_ delegate: PlanetKitCameraDeviceChangeDelegate)
    PlanetKitCamera.didStartNotificationvar delegate: PlanetKitCameraDelegate? { get set }
    PlanetKitCamera.didStopNotificationvar delegate: PlanetKitCameraDelegate? { get set }
Added
  • PlanetKitCall class 1-to-1 call
    • var myVideoStream: PlanetKitVideoStream! { get }
    • var myScreenShareStream: PlanetKitVideoStream! { get }
  • PlanetKitConference class Group call
    • var myVideoStream: PlanetKitVideoStream! { get }
    • var myScreenShareStream: PlanetKitVideoStream! { get }
  • PlanetKitCameraManager class 1-to-1 callGroup call
    • func startPreview(delegate: PlanetKitVideoOutputDelegate)
    • func stopPreview(delegate: PlanetKitVideoOutputDelegate)
    • var previewModifier: PlanetKitVideoModifierDelegate? { get set }
    • func setCustomCamera(_ customCamera: PlanetKitCustomCamera)
    • func resetToDefaultCamera()
    • var currentDeviceInfo: PlanetKitVideoCaptureDeviceInfo? { get }
    • var isStarted: Bool { get }
    • var preset: PlanetKitCameraPreset? { get }
    • var position: PlanetKitCameraPosition { get }
    • var frameRate: PlanetKitFrameRate? { get }
    • func change(deviceInfo: PlanetKitVideoCaptureDeviceInfo)
    • func switchPosition()
    • func addInterruptReceiver(_ interruptReceiver: PlanetKitCameraInterruptDelegate)
    • func removeInterruptReceiver(_ interruptReceiver: PlanetKitCameraInterruptDelegate)
    • var virtualBackground: PlanetKitVirtualBackground? { get set }
    • var deviceInfos: [PlanetKitVideoCaptureDeviceInfo] { get }
    • static var isCameraAvailable: Bool { get }
    • static var shared: PlanetKitCameraManager { get }
    • weak var delegate: PlanetKitCameraDelegate? { get set }
    • func addDeviceChangeDelegate(_ delegate: PlanetKitCameraDeviceChangeDelegate)
    • func removeDeviceChangeDelegate(_ delegate: PlanetKitCameraDeviceChangeDelegate)
  • PlanetKitCameraDelegate protocol 1-to-1 callGroup call
    • func didStart()
    • func didStop(_ error: NSError?)
  • PlanetKitCustomCamera class 1-to-1 callGroup call
    • func sendVideo(videoBuffer: PlanetKitVideoBuffer)
    • func isVideoSendAvailable() -> Bool
  • PlanetKitCall class 1-to-1 call
    • var peerVideoStream: PlanetKitVideoStream
Removed
  • PlanetKitCamera class 1-to-1 callGroup call
  • PlanetKitCameraControllable protocol 1-to-1 callGroup call
  • PlanetKitCall class 1-to-1 call
    • var camera: PlanetKitCameraControllable? { get }
    • func startPreview()
    • func stopPreview()
  • PlanetKitConference class Group call
    • var camera: PlanetKitCameraControllable? { get }
    • func startPreview()
    • func stopPreview()
  • PlanetKitInitialSettingBuilder class 1-to-1 callGroup call
    • func withDisableKitCameraKey(disable: Bool) -> PlanetKitInitialSettingBuilder
  • PlanetKitMakeCallSettingBuilder class 1-to-1 call
    • func withCustomCameraKey(camera: PlanetKitCameraControllable) -> PlanetKitMakeCallSettingBuilder
    • func withCustomCameraStreamKey(videoStream: PlanetKitVideoStream) -> PlanetKitMakeCallSettingBuilder
  • PlanetKitVerifyCallSettingBuilder class 1-to-1 call
    • func withCustomCameraKey(camera: PlanetKitCameraControllable) -> PlanetKitVerifyCallSettingBuilder
    • func withCustomCameraStreamKey(videoStream: PlanetKitVideoStream) -> PlanetKitVerifyCallSettingBuilder
  • PlanetKitJoinConferenceSettingBuilder class Group call
    • func withCustomCameraKey(camera: PlanetKitCameraControllable) -> PlanetKitJoinConferenceSettingBuilder
    • func withCustomCameraStreamKey(videoStream: PlanetKitVideoStream) -> PlanetKitJoinConferenceSettingBuilder

Code examples

Start camera preview
  • Example of an earlier version

    class PreviewVideoViewController: UIViewController {
    ....

    var myVideoView: PlanetKitMTKView!

    private func setupView() {
    PlanetKitCamera.shared.setModifier(self)

    PlanetKitCamera.shared.addReceiver(myVideoView)
    PlanetKitCamera.shared.open()
    PlanetKitCamera.shared.start()
    }
    }

    extension VideoViewController: PlanetKitVideoModifierDelegate {
    func videoOutput(_ videoBuffer: PlanetKitVideoBuffer) {
    ....
    }
    }
  • New version example

    class PreviewVideoViewController: UIViewController {
    ....

    var myVideoView: PlanetKitMTKView!

    private func setupView() {
    PlanetKitCameraManager.shared.previewModifier = self
    PlanetKitCameraManager.shared.startPreview(delegate: myVideoView)
    }
    }

    extension VideoViewController: PlanetKitVideoModifierDelegate {
    func videoOutput(_ videoBuffer: PlanetKitVideoBuffer) {
    ....
    }
    }
Switch to another camera device
  • Example of an earlier version

    class CameraDeviceViewController: UIViewController {
    ....

    private var devices: [PlanetKitVideoCaptureDevice] = []
    private var deviceNames: [String] = []

    private func refreshDevices() {
    devices = PlanetKitCamera.shared.devices

    deviceNames.removeAll()
    for device in devices {
    deviceNames.append(device.name)
    }
    }

    private func change(device: PlanetKitVideoCaptureDevice) {
    PlanetKitCamera.shared.change(device: device)
    }
    }
  • New version example

    class CameraDeviceViewController: UIViewController {
    ....

    private var deviceInfos: [PlanetKitVideoCaptureDeviceInfo] = []
    private var deviceNames: [String] = []

    private func refreshDevices() {
    let currentDeviceInfo = PlanetKitCameraManager.shared.currentDeviceInfo
    deviceInfos = PlanetKitCameraManager.shared.deviceInfos

    var selectedIndex = -1
    deviceNames.removeAll()
    for (index, deviceInfo) in deviceInfos.enumerated() {
    deviceNames.append(deviceInfo.name)
    if currentDeviceInfo?.uniqueID == deviceInfo.uniqueID {
    selectedIndex = index
    }
    }
    }

    private func change(deviceInfo: PlanetKitVideoCaptureDeviceInfo) {
    PlanetKitCameraManager.shared.change(deviceInfo: deviceInfo)
    }
    }
Add a receiver for the local user's video view
  • Example of an earlier version

    class VideoViewController: UIViewController {
    ....

    var call: PlanetKitCall!
    var myVideoView: PlanetKitMTKView!

    private func setMyVideo() {
    call.setMyVideoReceiver(myVideoView)
    }
    }
  • New version example

    class VideoViewController: UIViewController {
    ....

    var call: PlanetKitCall!
    var myVideoView: PlanetKitMTKView!

    private func setMyVideo() {
    call.myVideoStream.addReceiver(myVideoView)
    }
    }
Use a custom camera for the video source
import PlanetKit

class CustomCamera: PlanetKitCustomCamera {
static var shared = CustomCamera()

// Implement the abstract method to handle FPS limit updates
override func processFpsLimitUpdate(enabled: Bool, fps: Int32) {
// Handle the FPS limit update
// If `enabled` is true, adjust your frame generation logic to according to the `fps`
}

// Method to simulate video buffer processing
func processVideoBuffer(buffer: CMSampleBuffer) {
guard let targetBuffer = PlanetKitVideoBuffer.getPreferredSampleBuffer(buffer) else {
return
}

let timestamp = CMSampleBufferGetPresentationTimeStamp(targetBuffer)

// Check if video buffer can be sent. If false, drop the buffer.
guard isVideoSendAvailable(timestamp: timestamp) else { return }


let videoBuffer = PlanetKitVideoBuffer(sampleBuffer: targetBuffer,
timestamp: timestamp,
rotation: .rotation0,
position: .unknown,
sender: nil,
source: .camera)

sendVideo(videoBuffer: videoBuffer)
}
}

// Start using the custom camera.
PlanetKitCameraManager.shared.setCustomCamera(CustomCamera.shared)

// Reset to the default device.
PlanetKitCameraManager.shared.resetToDefaultCamera()

Breaking change Remove the reason parameter from disableVideo() of PlanetKitConference

  • The reason parameter in the disableVideo function of PlanetKitConference has been removed because it serves no purpose.
  • Unused enum values in PlanetKitMediaDisableReason have been removed.

API changes

Changed
  • PlanetKitConference class Group call

    PreviousPlanetKit 5.5
    func disableVideo(reason: PlanetKitMediaDisableReason, stopCamera: Bool = true, completion: @escaping (Bool)->Void)func disableVideo(stopCamera: Bool = true, completion: @escaping (Bool)->Void)
Removed
  • PlanetKitMediaDisableReason enum 1-to-1 callGroup call
    • case noMediaSrc
    • case noRecvMedia

Breaking change Rename audio input/output

In audio system, the input/output* names were considered confusing, so they have been changed to mic/spk*.

API changes

Changed
  • PlanetKitAudioDeviceType enum 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioDirection.input.mic
    PlanetKitAudioDirection.output.spk
  • PlanetKitAudioDeviceChangeDelegate enum 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func didAudioDeviceChange(device: PlanetKitAudioDevice?, direction: PlanetKitAudioDirection)didAudioDeviceChange(device: PlanetKitAudioDevice?, type: PlanetKitAudioDeviceType)
    func didAudioDefaultSystemDeviceChange(device: PlanetKitAudioDevice, direction: PlanetKitAudioDirection)didAudioDefaultSystemDeviceChange(device: PlanetKitAudioDevice, type: PlanetKitAudioDeviceType)
  • PlanetKitAudioVolumeDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func didChangeVolume(_ direction: PlanetKitAudioDirection, volume: Float)func didChangeVolume(_ type: PlanetKitAudioDeviceType, volume: Float)
  • PlanetKitAudioMicControllable protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    var inputDevice: PlanetKitAudioDevice? { get }var micDevice: PlanetKitAudioDevice? { get }
  • PlanetKitAudioSpkControllable protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    var outputDevice: PlanetKitAudioDevice? { get }var spkDevice: PlanetKitAudioDevice? { get }
  • PlanetKitAudio class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    var inputDevice: PlanetKitAudioDevice? { get }var micDevice: PlanetKitAudioDevice? { get }
    var outputDevice: PlanetKitAudioDevice? { get }var spkDevice: PlanetKitAudioDevice? { get }
    let inputVolume: Floatlet micVolume: Float
    let outputVolume: Floatlet spkVolume: Float
    func setVolume(_ volume: Float, for direction: PlanetKitAudioDirection)func setVolume(_ volume: Float, for type: PlanetKitAudioDeviceType)
    func addVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for direction: PlanetKitAudioDirection)func addVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for type: PlanetKitAudioDeviceType)
    func removeVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for direction: PlanetKitAudioDirection)func removeVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for type: PlanetKitAudioDeviceType)
    func setPreferredDefaultDevice(direction: PlanetKitAudioDirection)func setPreferredDefaultDevice(type: PlanetKitAudioDeviceType)

Breaking change Add audio description

Replaced audio volume level with audio description.

The audio description is information that comes with audio frame data when it is received and is updated periodically.

API changes

Changed
  • PlanetKitSubgroupManager class Group call

    PreviousPlanetKit 5.5
    func setPeerVolume(_ volumeLevel: Int8, peerId: PlanetKitUserId, subgroupName: String?, allSubgroupsPeerSubscribed: Bool, completion: @escaping (Bool)->Void)func setPeerVolumeLevelSetting(_ volumeLevel: Int8, peerId: PlanetKitUserId, subgroupName: String?, allSubgroupsPeerSubscribed: Bool, completion: @escaping (Bool)->Void)
  • PlanetKitCall class 1-to-1 call

    PreviousPlanetKit 5.5
    func setMicVolumeReceiver(_ volumeReceiver: PlanetKitAudioMicVolumeDelegate, interval: TimeInterval)func setMyAudioDescriptionReceiver(_ receiver: PlanetKitMyAudioDescriptionDelegate)
    func resetMicVolumeReceiver()func resetMyAudioDescriptionReceiver()
    func setSpkVolumeReceiver(_ volumeReceiver: PlanetKitAudioSpkVolumeDelegate, interval: TimeInterval)func setPeerAudioDescriptionReceiver(_ receiver: PlanetKitPeerAudioDescriptionDelegate)
    func resetSpkVolumeReceiver()func resetPeerAudioDescriptionReceiver()
    var isSendVideoHwCodecEnabled { get }var isVideoHwCodecEnabled { get }
  • PlanetKitConference class Group call

    PreviousPlanetKit 5.5
    func setMicVolumeReceiver(_ volumeReceiver: PlanetKitAudioMicVolumeDelegate, interval: TimeInterval)func setMyAudioDescriptionReceiver(_ receiver: PlanetKitMyAudioDescriptionDelegate)
    func resetMicVolumeReceiver()func resetMyAudioDescriptionReceiver()
    func setSpkVolumeReceiver(_ volumeReceiver: PlanetKitAudioSpkVolumeDelegate, interval: TimeInterval)func setPeerAudioDescriptionReceiver(_ receiver: PlanetKitPeerAudioDescriptionDelegate)
    func resetSpkVolumeReceiver()func resetPeerAudioDescriptionReceiver()
    var isSendVideoHwCodecEnabled { get }var isVideoHwCodecEnabled { get }
  • PlanetKitMyAudioDescriptionDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)func myAudioDescriptionDidUpdate(_ description: PlanetKitMyAudioDescription)
  • PlanetKitAudioDeviceVolumeDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)func volumeDidUpdate(_ deviceType: PlanetKitAudioDeviceType, volume: Float)
  • PlanetKitPeerAudioDescription class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioSpkVolumeMeter.userId, PlanetKitAudioSpkVolumeMeter.serviceIdlet peerId: PlanetKitUserId
    PlanetKitAudioSpkVolumeMeter.averageLevellet averageVolumeLevel: Int8
    PlanetKitConferenceDelegate.subgroupPeerAudioDidChange(_:peer:audioSubgroupName:oldName:)let sentSubgroupName: String?
    PlanetKitConferenceDelegate.subgroupPeerAudioDidChange(_:peer:audioTaggedSubgroupName:oldName:)let taggedSubgroupName: String?
  • PlanetKitPeerAudioDescriptionDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioSpkVolumeDelegate.didRefreshSpkVolumeMeter(_ :level:)func peerAudioDescriptionsDidUpdate(_ descriptions: [PlanetKitPeerAudioDescription], averageVolumeLevel: Int8)
Added
  • PlanetKitMakeCallSettingBuilder class 1-to-1 call
    • func withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitMakeCallSettingBuilder
    • func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitMakeCallSettingBuilder
  • PlanetKitVerifyCallSettingBuilder class 1-to-1 call
    • func withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitVerifyCallSettingBuilder
    • func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitVerifyCallSettingBuilder
  • PlanetKitJoinConferenceSettingBuilder class Group call
    • func withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitJoinConferenceSettingBuilder
    • func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitJoinConferenceSettingBuilder
Removed
  • PlanetKitConferenceDelegate protocol Group call
    • func subgroupPeerVideoDidChange(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, videoSubgroupName: String?, oldName: String?)
    • func subgroupPeerVideoDidChange(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, videoTaggedSubgroupName: String?, oldName: String?)
    • func subgroupPeerAudioDidChange(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, audioSubgroupName: String?, oldName: String?)
    • func subgroupPeerAudioDidChange(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, audioTaggedSubgroupName: String?, oldName: String?)
  • PlanetKitCall class 1-to-1 call
    • let micVolumeLevel: Int8
    • let spkVolumeLevel: Int8
  • PlanetKitConference class Group call
    • let micVolumeLevel: Int8
    • let spkVolumeLevel: Int8

Code examples

override func viewDidLoad() {
super.viewDidLoad()
....

conference.setPeerAudioDescriptionReceiver(self)
conference.setMyAudioDescriptionReceiver(self)
}

extension VideoConferenceViewController: PlanetKitPeerAudioDescriptionDelegate {
func peerAudioDescriptionsDidUpdate(_ descriptions: [PlanetKitPeerAudioDescription], averageVolumeLevel: Int8) {
DispatchQueue.main.async {
self.resetAllPeerVolumes()
for description in descriptions {
// TODO: Update audio volumes or media route
}
}
}
}

extension VideoConferenceViewController: PlanetKitMyAudioDescriptionDelegate {
func myAudioDescriptionDidUpdate(_ description: PlanetKitMyAudioDescription) {
DispatchQueue.main.async {
// TODO: Update my volume using description.averageVolumeLevel
}
}
}
  • Changed delegates, modifiers, and receivers to assignable member variables and removed corresponding setters functions.

API changes

Changed
  • PlanetKitAudioMicControllable protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func setMicPrivateDelegate(_ micDelegate: PlanetKitAudioMicCaptureDelegate?)var micPrivateDelegate: PlanetKitAudioMicCaptureDelegate?
    func setMicModifier(_ micModifier: PlanetKitAudioMicCaptureDelegate?)var micModifier: PlanetKitAudioMicCaptureDelegate?
    func setMicVolumeReceiver(_ volumeReceiver: PlanetKitAudioDeviceVolumeDelegate, interval: TimeInterval)
    func resetMicVolumeReceiver()
    var micVolumeReceiver: PlanetKitAudioDeviceVolumeDelegate?
    var micVolumeInterval: TimeInterval
  • PlanetKitAudioSpkControllable protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func setSpkPrivateDelegate(_ micDelegate: PlanetKitAudioSpkPlayDelegate?)var spkPrivateDelegate: PlanetKitAudioSpkPlayDelegate?
    func setSpkModifier(_ micModifier: PlanetKitAudioSpkPlayDelegate?)var spkModifier: PlanetKitAudioSpkPlayDelegate?
    func setSpkVolumeReceiver(_ volumeReceiver: PlanetKitAudioDeviceVolumeDelegate, interval: TimeInterval)
    func resetSpkVolumeReceiver()
    var spkVolumeReceiver: PlanetKitAudioDeviceVolumeDelegate?
    var spkVolumeInterval: TimeInterval
  • PlanetKitCall class 1-to-1 call

    PreviousPlanetKit 5.5
    func setSpkModifier(_ spkModifier: PlanetKitAudioSpkPlayDelegate)
    func resetSpkModifier()
    var spkModifier: PlanetKitAudioSpkPlayDelegate?
    func setSpkReceiver(_ spkReceiver: PlanetKitAudioSpkPlayDelegate)
    func resetSpkReceiver()
    var spkReceiver: PlanetKitAudioSpkPlayDelegate?
    func setMicModifier(_ micModifier: PlanetKitAudioMicCaptureDelegate)
    func resetMicModifier()
    var micModifier: PlanetKitAudioMicCaptureDelegate?
    func setMicReceiver(_ micReceiver: PlanetKitAudioMicCaptureDelegate)
    func resetMicReceiver()
    var micReceiver: PlanetKitAudioMicCaptureDelegate?
    func setPeerAudioDescriptionReceiver(_ receiver: PlanetKitPeerAudioDescriptionDelegate)
    func resetPeerAudioDescriptionReceiver()
    var peerAudioDescriptionReceiver: PlanetKitPeerAudioDescriptionDelegate?
    func setMyAudioDescriptionReceiver(_ receiver: PlanetKitMyAudioDescriptionDelegate)
    func resetMyAudioDescriptionReceiver()
    var myAudioDescriptionReceiver: PlanetKitMyAudioDescriptionDelegate?
    func setMyVideoModifier(_ videoModifier: PlanetKitVideoModifierDelegate)
    func resetMyVideoModifier()
    var myVideoModifier: PlanetKitVideoModifierDelegate?
    func setMyVideoReceiver(_ videoReceiver: PlanetKitVideoOutputDelegate)
    func resetMyVideoReceiver()
    var myVideoStream: PlanetKitVideoStream { get }
    var initData: String? { get }var peerStartMessage: PlanetKitCallStartMessage? { get }
    func acceptCall(mediaType: PlanetKitMediaType, usePreparation: Bool, initData: String?)func acceptCall(startMessage: PlanetKitCallStartMessage?, useResponderPreparation: Bool, recordOnCloud: Bool = false, initialMyVideoState: PlanetKitInitialMyVideoState = .resume)
  • PlanetKitConference class Group call

    PreviousPlanetKit 5.5
    func setSpkModifier(_ spkModifier: PlanetKitAudioSpkPlayDelegate)
    func resetSpkModifier()
    var spkModifier: PlanetKitAudioSpkPlayDelegate?
    func setSpkReceiver(_ spkReceiver: PlanetKitAudioSpkPlayDelegate)
    func resetSpkReceiver()
    var spkReceiver: PlanetKitAudioSpkPlayDelegate?
    func setMicModifier(_ micModifier: PlanetKitAudioMicCaptureDelegate)
    func resetMicModifier()
    var micModifier: PlanetKitAudioMicCaptureDelegate?
    func setMicReceiver(_ micReceiver: PlanetKitAudioMicCaptureDelegate)
    func resetMicReceiver()
    var micReceiver: PlanetKitAudioMicCaptureDelegate?
    func setPeerAudioDescriptionReceiver(_ receiver: PlanetKitPeerAudioDescriptionDelegate)
    func resetPeerAudioDescriptionReceiver()
    var peerAudioDescriptionReceiver: PlanetKitPeerAudioDescriptionDelegate?
    func setMyAudioDescriptionReceiver(_ receiver: PlanetKitMyAudioDescriptionDelegate)
    func resetMyAudioDescriptionReceiver()
    var myAudioDescriptionReceiver: PlanetKitMyAudioDescriptionDelegate?
    func setMyVideoModifier(_ videoModifier: PlanetKitVideoModifierDelegate)
    func resetMyVideoModifier()
    var myVideoModifier: PlanetKitVideoModifierDelegate?
    func setMyVideoReceiver(_ videoReceiver: PlanetKitVideoOutputDelegate)
    func resetMyVideoReceiver()
    var myVideoStream: PlanetKitVideoStream { get }

Code examples

The following is a code example for setting PlanetKitMyAudioDescriptionDelegate for the local user's audio.

// Previous
extension MyAudioDescriptionView: PlanetKitMyAudioDescriptionDelegate {
func setDelegate(call: PlanetKitCall) {
call.setMyAudioDescriptionReceiver(self)
}
func removeDelegate(call: PlanetKitCall) {
call.resetMyAudioDescriptionReceiver()
}
}

// PlanetKit 5.5
extension MyAudioDescriptionView: PlanetKitMyAudioDescriptionDelegate {
func setDelegate(call: PlanetKitCall) {
call.myAudioDescriptionReceiver = self
}
func removeDelegate(call: PlanetKitCall) {
call.myAudioDescriptionReceiver = nil
}
}

Breaking change Remove mic, spk from PlanetKitCall and PlanetKitConference

  • Removed member variables mic, spk from PlanetKitCall and PlanetKitConference. Please use audioManager to access the session's PlanetKitAudioMicControllable and PlanetKitAudioSpkControllable.

API changes

Changed
  • PlanetKitCall class 1-to-1 call

    PreviousPlanetKit 5.5
    var audio: PlanetKitAudioManager?var audioManager: PlanetKitAudioManager
  • PlanetKitConference class Group call

    PreviousPlanetKit 5.5
    var audio: PlanetKitAudioManager?var audioManager: PlanetKitAudioManager
Removed
  • PlanetKitCall class 1-to-1 call

    • var mic: PlanetKitAudioMicControllable
    • var spk: PlanetKitAudioSpkControllable
  • PlanetKitConference class Group call

    • var mic: PlanetKitAudioMicControllable
    • var spk: PlanetKitAudioSpkControllable

Breaking change Remove PlanetKitAudioSessionHandler

PlanetKitAudioSessionHandler has been removed and PlanetKitAudioSessionSettings for audio open and close settings have been added to PlanetKitAudio.

API changes

Added
  • PlanetKitAudioSessionSettings class 1-to-1 callGroup call
  • PlanetKitAudio class 1-to-1 callGroup call
    • var openSettings: PlanetKitAudioSessionSettings? { get set }
    • var closeSettings: PlanetKitAudioSessionSettings? { get set }
Removed
  • PlanetKitAudioSessionHandler protocol 1-to-1 callGroup call
  • PlanetKitAudioSessionContext class 1-to-1 callGroup call

Code examples

The following is a code example for setting AVAudioSession.Category to playAndRecord on audio open and soloAmbient on audio close.

  • Previous implementation

    class AudioSessionHandler: PlanetKitAudioSessionHandler {
    func audioSessionWillOpen(_ audio: PlanetKitAudio, context: PlanetKitAudioSessionContext) -> Bool {
    context.category = .playAndRecord
    return true
    }

    func audioSessionWillClose(_ audio: PlanetKitAudio, context: PlanetKitAudioSessionContext) -> Bool {
    context.category = .soloAmbient
    return true
    }
    }

    PlanetKitAudio.shared.audioSessionHandler = AudioSessionHandler()
  • New implementation

    let openSettings = PlanetKitAudioSessionSettings()
    openSettings.category = .playAndRecord

    PlanetKitAudio.shared.openSettings = openSettings

    let closeSettings = PlanetKitAudioSessionSettings()
    closeSettings.category = .soloAmbient
    closeSettings.mode = .default
    closeSettings.options = []
    closeSettings.audioPort = .none

    PlanetKitAudio.shared.closeSettings = closeSettings

Breaking change Make APIs of PlanetKitAudio more intuitive

  • Made member variables of PlanetKitAudio assignable and removed corresponding setter functions.

API changes

Changed
  • PlanetKitAudio class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    var spk: PlanetKitAudioSpkControllable? { get }var spk: PlanetKitAudioSpkControllable? { get set }
    var mic: PlanetKitAudioMicControllable? { get }var mic: PlanetKitAudioMicControllable? { get set }
Added
  • PlanetKitAudio class 1-to-1 callGroup call
    • var defaultIOBufDuration: Float64
    • var defaultMicSampleRate: Float64
    • var defaultSpkSampleRate: Float64
Removed
  • PlanetKitAudio class 1-to-1 callGroup call
    • func change(mic: PlanetKitAudioMicControllable?)
    • func change(spk: PlanetKitAudioSpkControllable?)
    • func setAudioSessionHandler(_ handler: PlanetKitAudioSessionHandler?)
    • func setDefaultSampleRate(mic: Float64)
    • func setDefaultSampleRate(spk: Float64)

Breaking change Improve connected parameter and verified parameter

  • Added more information about connecting 1-to-1 calls and group calls and verifying 1-to-1 calls.
  • Related APIs have been changed.

API changes

Changed
  • PlanetKitCallDelegate protocol 1-to-1 call

    PreviousPlanetKit 5.5
    func callDidConnect(_ call: PlanetKitCall)func callDidConnect(_ call: PlanetKitCall, connected: PlanetKitCallConnectedParam)
    func callDidVerify(_ call: PlanetKitCall, initData: PlanetKitInitData?)func callDidVerify(_ call: PlanetKitCall, peerInitData: PlanetKitInitData?, peerUseResponderPreparation: Bool)
  • PlanetKitCallKitParam class 1-to-1 call

    PreviousPlanetKit 5.5
    init(appName: String?, callerName: String, isVideo: Bool, ringtoneSound: URL?, icon: String?, addCallToList: Bool)init(appName: String?, callerName: String, isVideo: Bool, ringtoneSound: URL?, icon: String?, addCallToList: Bool, supportsHolding: Bool, useResponderPreparation: Bool = false, startMessage: PlanetKitCallStartMessage? = nil)
  • PlanetKitCall class 1-to-1 call

    PreviousPlanetKit 5.5
    var isSendVideoHwCodecEnabled { get }var isVideoHwCodecEnabled { get }
  • PlanetKitConference class Group call

    PreviousPlanetKit 5.5
    var isSendVideoHwCodecEnabled { get }var isVideoHwCodecEnabled { get }
Added
  • PlanetKitCallConnectedParam class 1-to-1 call
  • PlanetKitCallKitParam class 1-to-1 call
    • let useResponderPreparation: Bool
    • let startMessage: PlanetKitCallStartMessage?

Breaking change Add PlanetKitCallStartMessage to replace initData

  • PlanetKitCallStartMessage has been added to replace initData parameter used in PlanetKitCall API.
  • You must create PlanetKitCallStartMessage before setting it in the PlanetKitCallParam.

API changes

Changed
  • PlanetKitCallDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func callDidVerify(_ call: PlanetKitCall, initData: String?)func didVerify(_ call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Bool)
  • PlanetKitCall class 1-to-1 call

    PreviousPlanetKit 5.5
    var initData: String? { get }var peerStartMessage: PlanetKitCallStartMessage? { get }
    func acceptCall(mediaType: PlanetKitMediaType, usePreparation: Bool, initData: String?)func acceptCall(startMessage: PlanetKitCallStartMessage?, useResponderPreparation: Bool, recordOnCloud: Bool = false, initialMyVideoState: PlanetKitInitialMyVideoState = .resume)
  • PlanetKitCallParam class 1-to-1 call

    PreviousPlanetKit 5.5
    var initData: String? { get set }var startMessage: PlanetKitCallStartMessage? { get set }
    init(appName: String?, callerName: String, isVideo: Bool, ringtoneSound: URL?, icon: String?, addCallToList: Bool, supportsHolding: Bool, useResponderPreparation: Bool = false, initData: PlanetKitInitData? = nil)init(appName: String?, callerName: String, isVideo: Bool, ringtoneSound: URL?, icon: String?, addCallToList: Bool, supportsHolding: Bool, useResponderPreparation: Bool = false, startMessage: PlanetKitCallStartMessage? = nil)
Added
  • PlanetKitCallStartMessage class 1-to-1 call

Breaking change Update PlanetKitDisconnectReason

  • PlanetKitDisconnectReason has been updated and PlanetKitDisconnectSource and PlanetKitDisconnectedParam have been added to provide more information about the disconnect event of 1-to-1 calls and group calls.

API changes

Changed
  • PlanetKitDisconnectReason enum 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    case serviceAPIKeyErrorcase serviceAccessTokenError
  • PlanetKitCallDelegate protocol 1-to-1 call

    PreviousPlanetKit 5.5
    func callDidDisconnect(_ call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?)func didDisconnect(_ call: PlanetKitCall, disconnected: PlanetKitDisconnectedParam)
  • PlanetKitConferenceDelegate protocol Group call

    PreviousPlanetKit 5.5
    func conferenceDidLeave(_ conference: PlanetKitConference, reason: PlanetKitDisconnectReason, userCode: String?)func didDisconnect(_ conference: PlanetKitConference, disconnected: PlanetKitDisconnectedParam)
Added
  • PlanetKitDisconnectSource enum 1-to-1 callGroup call
  • PlanetKitDisconnectedParam enum 1-to-1 callGroup call
  • PlanetKitDisconnectReason enum 1-to-1 callGroup call
    • case internalError = 1109
    • case userError = 1110
    • case internalKitError = 1111
    • case micNoSource = 1112
    • case unavailableNetwork = 1308
    • case appDestroy = 1309
    • case systemSleep = 1310
    • case systemLogOff = 1311
Removed
  • PlanetKitDisconnectReason enum 1-to-1 callGroup call
    • case micNoSrcByLocal = 1101
    • case micNoSrcByRemote = 1102
    • case internalErrorByLocal = 1103
    • case internalErrorByRemote = 1104
    • case userErrorByLocal = 1105
    • case userErrorByRemote = 1106
    • case internalKitErrorByLocal = 1107
    • case internalKitErrorByRemote = 1108
    • case unavailableNetworkInCall = 1307
  • PlanetKitCall class 1-to-1 call
    • let disconnectByRemote: Bool

Breaking change Change the logging level and settings

The log level has been redesigned, and it has been modified to allow specifying the log size.

Log output is disabled by default at the silent log level.

If you want to provide minimal logs in a deployment build, please set the log level and log size.

API changes

Changed
  • PlanetKitInitialSettingBuilder class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func withEnableKitLogKey(level: PlanetKitLogLevel, module: PlanetKitLogModule) -> PlanetKitInitialSettingBuilderfunc withEnableKitLogKey(level: PlanetKitLogLevel, enable: Bool, logSize: PlanetKitLogSizeLimit) -> PlanetKitInitialSettingBuilder
Added
  • PlanetKitLogLevel enum 1-to-1 callGroup call
    • case detailed = 5
    • case simple = 4
    • case silent = 0
  • PlanetKitLogSizeLimit enum 1-to-1 callGroup call
    • case small = 0
    • case medium = 1
    • case large = 2
    • case unlimited = 3
Removed
  • PlanetKitLogLevel enum 1-to-1 callGroup call
    • case info = 5
    • case error = 2
    • case critical = 1
    • case none = 0
  • PlanetKitInitialSettingBuilder class 1-to-1 callGroup call
    • func withEnableKitDebugKey(debugSetting:)

Code examples

  • Previous implementation

    // Minimized logging for release
    var builder = PlanetKitInitialSettingBuilder()
    .withEnableKitLogKey(level: .error, enable: true)

    // Full logging for debugging
    var builder = PlanetKitInitialSettingBuilder()
    .withEnableKitLogKey(level: .info, enable: true)
  • New implementation

    // Minimized logging for release
    var builder = PlanetKitInitialSettingBuilder()
    .withEnableKitLogKey(level: .simple, enable: true, logSize: .small)

    // Full logging for debugging
    var builder = PlanetKitInitialSettingBuilder()
    .withEnableKitLogKey(level: .detailed, enable: true, logSize: .unlimited)

Breaking change Add view mirroring and rotation at the video render view

PlanetKitMTKView.mirroredType and PlanetKitMTKView.rotation have been added to support video mirroring and video rotation when rendering video with PlanetKitMTKView.

API changes

Changed
  • PlanetKitVideoBuffer class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    init(sampleBuffer: CMSampleBuffer?, timestamp: CMTime, rotation: PlanetKitVideoRotation, mirrored: Bool, sender: PlanetKitUserId?, source: PlanetKitVideoSource)init(sampleBuffer: CMSampleBuffer?, timestamp: CMTime, rotation: PlanetKitVideoRotation, position: PlanetKitCameraPosition, sender: PlanetKitUserId?, source: PlanetKitVideoSource)
    init(pixelBuffer: CVPixelBuffer?, sampleBuffer: CMSampleBuffer?, timestamp: CMTime, rotation: PlanetKitVideoRotation, mirrored: Bool, sender: PlanetKitUserId?, source: PlanetKitVideoSource)init(pixelBuffer: CVPixelBuffer?, sampleBuffer: CMSampleBuffer?, timestamp: CMTime, rotation: PlanetKitVideoRotation, position: PlanetKitCameraPosition, sender: PlanetKitUserId?, source: PlanetKitVideoSource)
Added
  • PlanetKitMirroredType enum 1-to-1 callGroup call
  • PlanetKitMTKView class 1-to-1 callGroup call
    • var mirroredType: PlanetKitMirroredType { get set }
    • var rotation: PlanetKitVideoRotation { get set }
  • PlanetKitVideoBuffer class 1-to-1 callGroup call
    • var position: PlanetKitCameraPosition { get set }
Removed
  • PlanetKitVideoCaptureDevice class 1-to-1 callGroup call
    • var preferredMirrored: NSNumber? { get set }
  • PlanetKitCamera class 1-to-1 callGroup call
    • static func getVideoRotation(orientation:mirrored:)
  • PlanetKitVideoBuffer class 1-to-1 callGroup call
    • var mirrored : Bool { get set }

Code examples

For the front camera, the mirrored status can be turned off as follows.

  • Previous implementation

    let device = conference.camera?.currentDevice
    device?.preferredMirrored = false

    conference.camera?.change(device: device)
  • New implementation

    override func viewDidLoad() {
    super.viewDidLoad()

    let mtkView = PlanetKitMTKView(frame: view.bounds, device: nil)
    mtkView.mirroredType = .unmirrored
    .....
    }

Breaking change Change the API for data sessions

  • The unsupported reason in PlanetKitDataSessionFailReason, which was used when the session was closed due to the peer calling unsupportInboundDataSession(), has been removed.
  • The didClose callback has been added to both PlanetKitInboundDataSessionDelegate and PlanetKitOutboundDataSessionDelegate to notify when a data session is closed.
  • Closure of a data session due to unsupported can also be detected through the didClose event.

API changes

Changed
  • PlanetKitInboundDataSessionDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.4
    func inboundDataSessionDidReceive(_ session: PlanetKitInboundDataSession, peerId: PlanetKitUserId, data: Data, timestamp: UInt64, offset: UInt64)func didReceive(_ session: PlanetKitInboundDataSession, peerId: PlanetKitUserId, data: Data, timestamp: UInt64, offset: UInt64)
  • PlanetKitOutboundDataSessionDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.4
    func outboundDataSessionDidTooLongQueuedData(_ session: PlanetKitOutboundDataSession, enabled: Bool)func didTooLongQueuedData(_ session: PlanetKitOutboundDataSession, enabled: Bool)
Added
  • PlanetKitDataSessionClosedReason enum 1-to-1 callGroup call

  • PlanetKitInboundDataSessionDelegate protocol 1-to-1 callGroup call

    • func didClose(_ session: PlanetKitInboundDataSession, reason: PlanetKitDataSessionClosedReason)
  • PlanetKitOutboundDataSessionDelegate protocol 1-to-1 callGroup call

    • func didClose(_ session: PlanetKitOutboundDataSession, reason: PlanetKitDataSessionClosedReason)
Removed
  • PlanetKitDataSessionFailReason enum 1-to-1 callGroup call
    • case unsupported

Code examples

  • Example of an earlier version

    call.makeOutboundDataSession(streamId: stream, type: .reliableMsg, delegate: delegate) { dataSession, failReason in
    if failReason == .unsupported {
    // Earlier versions handle errors here
    }
    ....
    }
  • New version example

    extension PhotoSender: PlanetKitOutboundDataSessionDelegate {
    func didClose(_ session: PlanetKitOutboundDataSession, reason: PlanetKitDataSessionClosedReason) {
    if reason == .unsupported {
    // Handle unsupported case here
    }
    }
    ....
    }

Breaking change Revise data session with PlanetKitDataSessionFailReason

  • Data session failure information has been added.
  • Related APIs have been changed.

API changes

Changed
  • PlanetKitSendDataSession class → PlanetKitOutboundDataSession class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    typealias Completion = (_ dataSession: PlanetKitSendDataSession?, _ success: Bool, _ description: String?)->Voidtypealias Completion = (_ dataSession: PlanetKitOutboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void
  • PlanetKitRecvDataSession class → PlanetKitInboundDataSession class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    typealias Completion = (_ dataSession: PlanetKitRecvDataSession?, _ success: Bool, _ description: String?)->Voidtypealias Completion = (_ dataSession: PlanetKitInboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void
Added
  • PlanetKitDataSessionFailReason enum 1-to-1 callGroup call
    • case none = 0
    • case internal = 1
    • case unsupported = 2
    • case notIncoming = 3
    • case alreadyExist = 4
    • case invalidId = 5
    • case invalidType = 6
  • PlanetKitDataSessionControllable protocol 1-to-1 callGroup call
    • func getOutboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitOutboundDataSession?
    • func getInboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitInboundDataSession?
Removed
  • PlanetKitSendDataSessionDelegate protocol 1-to-1 callGroup call
    • func sendDataSessionDidUnsupport(_ session: PlanetKitSendDataSession)
  • PlanetKitRecvDataSessionDelegate protocol 1-to-1 callGroup call
    • func recvDataSessionDidTooLongQueuedData(_ session: PlanetKitRecvDataSession, enabled: Bool)
    • func recvDataSessionDidUnsupport(_ session: PlanetKitRecvDataSession)

Spec change Change the hold feature

The hold function will pause receiving peer's video or audio all the time.

API changes

Changed
  • PlanetKitCall class 1-to-1 call

    PreviousPlanetKit 5.5
    func holdCall(reason: String?, pauseRecv: Bool, completion: @escaping (Bool)->Void)func holdCall(reason: String?, completion: @escaping (Bool)->Void)
  • PlanetKitConferencePeer class Group call

    PreviousPlanetKit 5.5
    PlanetKitConferencePeerInfo.holdvar holdStatus: PlanetKitHoldStatus
  • PlanetKitHoldStatus class Group call

    PreviousPlanetKit 5.5
    PlanetKitHold.isHeldlet isOnHold: Bool
    PlanetKitHold.holdReasonlet holdReason: String?
Removed
  • PlanetKitConferencePeerHold class Group call
    • let peerPausedRecv: Bool

Spec change Hold feature now stops screen share from being sent

If you call hold while screen sharing, the screen share stops and callback event occurs.

API changes

Added
  • PlanetKitCallDelegate protocol 1-to-1 call
    • func myScreenShareDidStopByHold(_ conference: PlanetKitConference)
  • PlanetKitConferenceDelegate protocol Group call
    • func myScreenShareDidStopByHold(_ conference: PlanetKitConference)
Removed
  • PlanetKitCall class 1-to-1 call
    • var hold: Bool { get }
  • PlanetKitConference class Group call
    • var hold: Bool { get }
    • func isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
  • PlanetKitSubgroup class Group call
    • func isPeerScreenShared(peerId: PlanetKitUserId) -> Bool

Spec change Remove the high-priority audio transmission

  • The high-priority audio transmission feature has been deprecated.

API changes

Removed
  • PlanetKitConference class Group call
    • let isHighPriorityAudio: Bool
    • func setHighPriorityAudioSend(_ isHighPriority: Bool, completion: @escaping (Bool)->Void)

Spec change Add the verified state to PlanetKitCallState

  • The call state between the call verified event and the call connected/disconnected event is changed to the verified state from the waitAnswer state.
  • In addition, the answered state has been removed.

API changes

Added
  • PlanetKitCallState enum 1-to-1 call
    • case verified
Removed
  • PlanetKitCallState enum 1-to-1 call
    • case answered

Spec change Remove the room attribute

You can create subgroups without the room attribute settings since PlanetKit 5.2.

API changes

Removed
  • PlanetKitConference class Group call
    • let roomType: PlanetKitConferenceRoomType
  • PlanetKitConferenceParam class Group call
    • var roomType: PlanetKitConferenceRoomType { get set }
  • PlanetKitConferenceRoomType enum Group call
  • PlanetKitDisconnectReason enum - 1-on-1 call, Group call
    • case wrongRoomAttribute = 1403

Spec change Add device rotation at the video capture device

You can use rotation to send the rotated camera image to the other participants.

API changes

Added
  • PlanetKitVideoCaptureDeviceInfo class 1-to-1 callGroup call
    • var rotation: PlanetKitVideoRotation { get set }
Removed
  • PlanetKitRenderingPolicy enum 1-to-1 callGroup call
    • case single
    • case tripleBuffering
  • PlanetKitCamera class 1-to-1 callGroup call
    • static func getVideoRotation(orientation: PlanetKitUIOrientation, mirror: Bool) -> PlanetKitVideoRotation

Code examples

The following is a code example for applying a 90-degree clockwise rotation to the camera video.

guard let deviceInfo = PlanetKitCameraManager.shared.currentDeviceInfo else {
return
}
deviceInfo.rotation = .rotation90
PlanetKitCameraManager.shared.change(deviceInfo: deviceInfo)

Spec change Change the specification of sendShortData()

  • Multicast option of the short data transmission feature in group calls has been deprecated. Supported options are unicast and broadcast.
  • In previous PlanetKit versions, the sum of the type size and short data size must not exceed 900 bytes.
  • Since PlanetKit 5.2, the size of the type must not exceed 100 bytes and the size of short data must not exceed 800 bytes.

API changes

Changed
  • PlanetKitConference class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func sendShortData(targets: [PlanetKitUserId]?, type: String, data: Data, completion: @escaping (Bool)->Void)func sendShortData(peerId: PlanetKitUserId, type: String, data: Data, completion: @escaping (Bool)->Void)

Spec change Add limitation to the display name

  • The displayName property in PlanetKitConferenceParam is now limited to 128 bytes, including null termination.
  • Any trailing part of the string that exceeds the maximum size is discarded.

Spec change Change the range of data session stream ID

  • The previous specification for range of data session stream ID was from 100 to 1000, but the upper limit has been changed to 999.

Spec change Change the specification regarding the size limit of app server data

  • The size limit for app server data (formerly stid) has been increased from 256 bytes to 4096 bytes.

Enhancement Use PlanetKitPeerControl instead of calling requestPeerVideo() and stopPeerVideo()

  • PlanetKitPeerControl has been added to support peer event/method isolation which allows applications to design a view/view model for a peer with less dependency on PlanetKitConference and PlanetKitConferenceDelegate.
  • Create PlanetKitPeerControl instance for a peer via PlanetKitConference.createPeerControl() and the instance's methods and events will specifically targeted for the peer.
  • Once PlanetKitPeerControl and PlanetKitPeerControlDelegate become available for a peer, you can update and control the peer's view/view model using PlanetKitPeerControl and PlanetKitPeerControlDelegate. This significantly reduces the needs to parse the peer's event from PlanetKitConferenceDelegate and provide extra parameters for peer methods in PlanetKitConference.

API changes

Added
  • PlanetKitPeerControlDelegate protocol Group call
  • PlanetKitPeerControl class Group call
  • PlanetKitConference class Group call
    • func createPeerControl(peer: PlanetKitConferencePeer) -> PlanetKitPeerControl?

Code examples

  1. Create your peer view or view model with a PlanetKitPeerControl property and necessary view properties.

    class YourPeerView {
    var mtkView: PlanetKitMTKView?
    var peerControl: PlanetKitPeerControl?
    }
  2. Extend your class to adopt and conform to PlanetKitPeerControlDelegate protocol.

    extension YourPeerView: PlanetKitPeerControlDelegate {
    // implement delegate functions as needed
    }
  3. Create PlanetKitPeerControl.

    extension YourPeerView {
    func createPeerControl(peer: PlanetKitConferencePeer) -> Bool {
    guard let peerControl = PlanetKitManager.shared.conference?.createPeerControl(peer: peer) else {
    NSLog("peer control create failed.")
    return false
    }

    self.peerControl = peerControl
    return true
    }
    }
  4. Register PlanetKitPeerControl.

    extension YourPeerView {
    func registerPeerControl() {
    peerControl?.register(delegate: self) { success in
    NSLog("registerPeerControl result: \(success).")
    }
    }
    }
  5. Handle events from PlanetKitPeerControlDelegate to play peer video.

    extension YourPeerView: PlanetKitPeerControlDelegate {
    func didUpdateVideo(_ peerControl: PlanetKitPeerControl, subgroup: PlanetKitSubgroup, status: PlanetKitVideoStatus) {
    if status.isEnabled {
    // When the peer's video status is enabled, start rendering the peer's video.
    self.peerControl?.startVideo(maxResolution: .recommended, delegate: self.mtkView!, subgroupName: self.peerControl?.peer.currentVideoSubgroupName) { success in
    NSLog("videoDidUpdate video start \(String(describing: self.peerControl?.peer.id)) success: \(success)")
    }
    }
    else {
    // Otherwise, stop rendering the peer's video.
    self.peerControl?.stopVideo() { success in
    NSLog("videoDidUpdate video stop \(String(describing: self.peerControl?.peer.id))")
    }
    }
    }
    }
  6. Unregister PlanetKitPeerControl.

    extension YourPeerView {
    func unregisterPeerControl() {
    peerControl?.unregister() { success in
    }
    }
    }

Enhancement Add PlanetKitMyMediaStatus

Added PlanetKitMyMediaStatus to get the local user's media status and observe the local user's media status change using PlanetKitMyMediaStatusDelegate.

API changes

Added
  • PlanetKitMyMediaStatusDelegate protocol Group call
  • PlanetKitMyMediaStatus class Group call
  • PlanetKitCall class 1-to-1 call
    • var myMediaStatus: PlanetKitMyMediaStatus { get }
  • PlanetKitConference class Group call
    • var myMediaStatus: PlanetKitMyMediaStatus { get }
Removed
  • PlanetKitConference class Group call
    • var myVideoStatus: PlanetKitVideoStatus { get }
    • var isMyAudioMuted: Bool { get }

Code examples

  • Use PlanetKitMyMediaStatus to implement the local user's UI view.

    class MyView: UIView {
    @IBOutlet private weak var status: UILabel!

    func setupView(conference: PlanetKitConference) {
    conference.myMediaStatus.addHandler(self) { success in }
    }

    func clearView(conference: PlanetKitConference) {
    conference.myMediaStatus.removeHandler(self) { success in }
    }
    }

    extension MyView: PlanetKitMyMediaStatusDelegate {
    func didMuteMic(_ myMediaStatus: PlanetKitMyMediaStatus) {
    DispatchQueue.main.async {
    status.text = "muted"
    }
    }
    }

Enhancement Use PlanetKitCCParam when calling verifyCall()

You can now parse the CCParam received by the push message to obtain the desired data.

API changes

Changed
  • PlanetKitManager class 1-to-1 call

    PreviousPlanetKit 5.5
    func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
    func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
Added
  • PlanetKitCCParam class 1-to-1 call

Code examples

guard let param = message?["cc_param"] as? String else { return }
guard let ccParam = PlanetKitCCParam(ccParam: param) else { return }
....
let result = PlanetKitManager.shared.verifyCall(myUserId: myUserId, ccParam: ccParam, settings: settings, delegate: manageable)

Enhancement Add PlanetKitInitialMyVideoState

PlanetKitInitialMyVideoState is an enum added to determine the state of the local user's video when a video call is started or activated.

  • This change allows you to set the initial video state to either resumed or paused.
  • The default value for a property or parameter of type PlanetKitInitialMyVideoState is PlanetKitInitialMyVideoState.resume.

API changes

Changed
  • PlanetKitCall class 1-to-1 call

    PreviousPlanetKit 5.5
    func acceptCall(mediaType: PlanetKitMediaType, usePreparation: Bool, initData: String?)func acceptCall(startMessage: PlanetKitCallStartMessage?, useResponderPreparation: Bool, recordOnCloud: Bool = false, initialMyVideoState: PlanetKitInitialMyVideoState = .resume)
    func enableVideo(completion: @escaping (Bool)->Void)func enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = .resume, completion: @escaping (Bool)->Void)
    func disableVideo(reason: PlanetKitMediaDisableReason, stopCamera: Bool = true, completion: @escaping (Bool)->Void)func disableVideo(reason: PlanetKitMediaDisableReason, completion: @escaping (Bool)->Void)
  • PlanetKitConference class Group call

    PreviousPlanetKit 5.5
    func enableVideo(completion: @escaping (Bool)->Void)func enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = .resume, completion: @escaping (Bool)->Void)
    func disableVideo(stopCamera: Bool = true, completion: @escaping (Bool)->Void)func disableVideo(completion: @escaping (Bool)->Void)
Added
  • PlanetKitInitialMyVideoState enum 1-to-1 call
    • case resume
    • case pause
  • PlanetKitCallParam class 1-to-1 call
    • var initialMyVideoState: PlanetKitInitialMyVideoState { get set }
  • PlanetKitConferenceParam class Group call
    • var initialMyVideoState: PlanetKitInitialMyVideoState { get set }

API change list

Changed

  • PlanetKitConferencePeer class Group call

    PreviousPlanetKit 5.5
    PlanetKitConferencePeerInfo.isDataSessionSupportedlet isDataSessionSupported: Bool
    PlanetKitConferencePeerInfo.isMutedlet isMuted: Bool
    PlanetKitConferencePeerInfo.holdlet holdStatus: PlanetKitHoldStatus
    PlanetKitConferencePeerInfo.subgroupNameslet subgroupNames: [String]?
    PlanetKitConferencePeerInfo.activeVideoSubgroupNamelet currentVideoSubgroupName: String?
    PlanetKitConferencePeerInfo.activeScreenShareSubgroupNamelet currentScreenShareSubgroupName: String?
    PlanetKitConferencePeerInfo.userEquipmentTypelet userEquipmentType: PlanetKitUserEquipmentType
    PlanetKitConferencePeerInfo.displayNamelet displayName: String?
    PlanetKitConferencePeerInfo.sipLocalIPlet sipLocalIP: String?
    PlanetKitConferencePeerInfo.sipDeviceInfolet sipDeviceInfo: String?
    PlanetKitConferencePeerState.videoStatusfunc videoStatus(subgroupName: String?) throws -> PlanetKitVideoStatus
    PlanetKitConferencePeerState.screenShareStatefunc screenShareStatus(subgroupName: String?) throws -> PlanetKitScreenShareStatus
    PlanetKitConferencePeerState.peerVolumefunc volumeLevelSetting(subgroupName: String?) throws -> PlanetKitVolumeLevel
    PlanetKitConferencePeerInfo.holdvar holdStatus: PlanetKitHoldStatus
  • PlanetKitConferenceDelegate protocol Group call

    PreviousPlanetKit 5.5
    func conferenceDidJoin(_ conference: PlanetKitConference)func didConnect(_ conference: PlanetKitConference)
    func conferenceDidLeave(_ conference: PlanetKitConference, reason: PlanetKitDisconnectReason, userCode: String?)func didDisconnect(_ conference: PlanetKitConference, disconnected: PlanetKitDisconnectedParam)
    func peerVideoDidUpdate(_ conference: PlanetKitConference, updated: PlanetKitConferenceVideoUpdateParam)func peersVideoDidUpdate(_ conference: PlanetKitConference, updated: PlanetKitConferenceVideoUpdateParam)
    func peersMicDidMute(_ conference: PlanetKitConference, peerInfos: [PlanetKitConferencePeerInfo])
    func peersMicDidMute(_ conference: PlanetKitConference, peerInfos: [PlanetKitConferencePeerInfo])func peersMicDidMute(_ conference: PlanetKitConference, peers: [PlanetKitConferencePeer])
    func peersMicDidUnmute(_ conference: PlanetKitConference, peerInfos: [PlanetKitConferencePeerInfo])func peersMicDidUnmute(_ conference: PlanetKitConference, peers: [PlanetKitConferencePeer])
    func peerDidRequestMyMute(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, mute: Bool)func myMuteRequestedByPeer(_ conference: PlanetKitConference, peer: PlanetKitConferencePeer, mute: Bool)
    func peersDidUnhold(_ conference: PlanetKitConference, peerInfos: [PlanetKitConferencePeerInfo])func peersDidUnhold(_ conference: PlanetKitConference, peers: [PlanetKitConferencePeer])
    func peersDidUnsetSharedContents(_ conference: PlanetKitConference, peerInfos: [PlanetKitConferencePeerInfo])func peersDidUnsetSharedContents(_ conference: PlanetKitConference, peers: [PlanetKitConferencePeer])
    func peerDidSetExclusivelySharedContents(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, data: Data, elapsed seconds: TimeInterval)func peerDidSetExclusivelySharedContents(_ conference: PlanetKitConference, peer: PlanetKitConferencePeer, data: Data, elapsed seconds: TimeInterval)
    func peerDidUnsetExclusivelySharedContents(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo)func peerDidUnsetExclusivelySharedContents(_ conference: PlanetKitConference, peer: PlanetKitConferencePeer)
    func conferenceDidReceiveAppControlMessage(_ conference: PlanetKitConference, message: Data)func didReceiveAppControlMessage(_ conference: PlanetKitConference, message: Data)
    func didDetectCamNoSrc(_ conference: PlanetKitConference)func didDetectMyVideoNoSource(_ conference: PlanetKitConference)
    func shortDataDidReceive(_ conference: PlanetKitConference, senderId: PlanetKitUserId, dataType: String, data: Data)func didReceiveShortData(_ conference: PlanetKitConference, senderId: PlanetKitUserId, dataType: String, data: Data)
    func conferenceDataSessionIncoming(_ conference: PlanetKitConference, streamId: PlanetKitDataSessionStreamId, subgroup: PlanetKitSubgroup?, type: PlanetKitDataSessionType)func dataSessionIncoming(_ conference: PlanetKitConference, streamId: PlanetKitDataSessionStreamId, subgroup: PlanetKitSubgroup?, type: PlanetKitDataSessionType)
    func conferenceDidStartMyBroadcast(_ conference: PlanetKitConference)func didStartMyBroadcast(_ conference: PlanetKitConference)
    func conferenceDidFinishMyBroadcast(_ conference: PlanetKitConference)func didFinishMyBroadcast(_ conference: PlanetKitConference)
    func conferenceDidErrorMyBroadcast(_ conference: PlanetKitConference, error: PlanetKitScreenShare.BroadcastError)func didErrorMyBroadcast(_ conference: PlanetKitConference, error: PlanetKitScreenShare.BroadcastError)
    func publicSubgroupPeerDidUpdate(_ conference: PlanetKitConference, updated: PlanetKitConferenceSubgroupUpdateParam)func peersDidUpdatePublicSubgroup(_ conference: PlanetKitConference, updated: PlanetKitConferenceSubgroupUpdateParam)
    func conferenceException(_ conference: PlanetKitConference, exceptions: [PlanetKitConferenceExceptionMessage])func exception(_ conference: PlanetKitConference, exceptions: [PlanetKitConferenceExceptionMessage])
    func badNetworkDidDetect(_ conference: PlanetKitConference, willDisconnected seconds: TimeInterval)func networkDidUnavailable(_ conference: PlanetKitConference, willDisconnected seconds: TimeInterval)
    func badNetworkDidResolve(_ conference: PlanetKitConference)func networkDidReavailable(_ conference: PlanetKitConference)
  • PlanetKitConferenceSubgroupUpdatedPeer class Group call

    PreviousPlanetKit 5.5
    let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer
    let subscribedGroupNames: [String]let subscribedSubgroupNames: [String]
    let unsubscribedGroupNames: [String]let unsubscribedSubgroupNames: [String]
  • PlanetKitConferencePeerHold class Group call

    PreviousPlanetKit 5.5
    let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer
  • PlanetKitConferencePeerVideoPause class Group call

    PreviousPlanetKit 5.5
    let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer
  • PlanetKitConferenceSetSharedContent class Group call

    PreviousPlanetKit 5.5
    let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer
  • PlanetKitManager class 1-to-1 call

    PreviousPlanetKit 5.5
    func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
    func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
  • PlanetKitHoldStatus class Group call

    PreviousPlanetKit 5.5
    PlanetKitHold.isHeldlet isOnHold: Bool
    PlanetKitHold.holdReasonlet holdReason: String?
  • PlanetKitScreen class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func setOverlay(windowLevel: CGWindowLevel, processIdentifier: Int32)func setOverlay(windowIDs: Set<CGWindowID>)
  • PlanetKitAudioDeviceType enum 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioDirection.inputcase mic
    PlanetKitAudioDirection.outputcase spk
  • PlanetKitAudioDeviceChangeDelegate enum 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func didAudioDeviceChange(device: PlanetKitAudioDevice?, direction: PlanetKitAudioDirection)func didAudioDeviceChange(device: PlanetKitAudioDevice?, type: PlanetKitAudioDeviceType)
    func didAudioDefaultSystemDeviceChange(device: PlanetKitAudioDevice, type: PlanetKitAudioDeviceType)func didAudioDefaultSystemDeviceChange(device: PlanetKitAudioDevice?, type: PlanetKitAudioDeviceType)
  • PlanetKitAudioVolumeDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func didChangeVolume(_ direction: PlanetKitAudioDirection, volume: Float)func didChangeVolume(_ type: PlanetKitAudioDeviceType, volume: Float)
  • PlanetKitAudioMicControllable protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    var inputDevice: PlanetKitAudioDevice? { get }var micDevice: PlanetKitAudioDevice? { get }
    func setMicPrivateDelegate(_ micDelegate: PlanetKitAudioMicCaptureDelegate?)weak var micPrivateDelegate: PlanetKitAudioMicCaptureDelegate? { get }
    func setMicModifier(_ micModifier: PlanetKitAudioMicCaptureDelegate?)weak var micModifier: PlanetKitAudioMicCaptureDelegate? { get }
    func setMicVolumeReceiver(_ volumeReceiver: PlanetKitAudioDeviceVolumeDelegate, interval: TimeInterval)
    func resetMicVolumeReceiver()
    weak var micVolumeReceiver: PlanetKitAudioDeviceVolumeDelegate? { get set }
    var micVolumeInterval: TimeInterval
  • PlanetKitAudioSpkControllable protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    var outputDevice: PlanetKitAudioDevice? { get }var spkDevice: PlanetKitAudioDevice? { get }
    func setSpkPrivateDelegate(_ micDelegate: PlanetKitAudioSpkPlayDelegate?)weak var spkPrivateDelegate: PlanetKitAudioSpkPlayDelegate? { get set }
    func setSpkModifier(_ micModifier: PlanetKitAudioSpkPlayDelegate?)weak var spkModifier: PlanetKitAudioSpkPlayDelegate? { get set }
    func setSpkVolumeReceiver(_ volumeReceiver: PlanetKitAudioDeviceVolumeDelegate, interval: TimeInterval)
    func resetSpkVolumeReceiver()
    weak var spkVolumeReceiver: PlanetKitAudioDeviceVolumeDelegate? { get set }
    var spkVolumeInterval: TimeInterval
  • PlanetKitAudio class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    var inputDevice: PlanetKitAudioDevice? { get }var micDevice: PlanetKitAudioDevice? { get }
    var outputDevice: PlanetKitAudioDevice? { get }var spkDevice: PlanetKitAudioDevice? { get }
    let inputVolume: Floatlet micVolume: Float
    let outputVolume: Floatlet spkVolume: Float
    func setVolume(_ volume: Float, for direction: PlanetKitAudioDirection)func setVolume(_ volume: Float, for type: PlanetKitAudioDeviceType)
    func addVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for direction: PlanetKitAudioDirection)func addVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for type: PlanetKitAudioDeviceType)
    func removeVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for direction: PlanetKitAudioDirection)func removeVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for type: PlanetKitAudioDeviceType)
    func setPreferredDefaultDevice(direction: PlanetKitAudioDirection)func setPreferredDefaultDevice(type: PlanetKitAudioDeviceType)
    var spk: PlanetKitAudioSpkControllable? { get }var spk: PlanetKitAudioSpkControllable? { get set }
    var mic: PlanetKitAudioMicControllable? { get }var mic: PlanetKitAudioMicControllable? { get set }
  • PlanetKitSubgroupManager class Group call

    PreviousPlanetKit 5.5
    func setPeerVolume(_ volumeLevel: Int8, peerId: PlanetKitUserId, subgroupName: String?, allSubgroupsPeerSubscribed: Bool, completion: @escaping (Bool)->Void)func setPeerVolumeLevelSetting(_ volumeLevel: Int8, peerId: PlanetKitUserId, subgroupName: String?, allSubgroupsPeerSubscribed: Bool, completion: @escaping (Bool)->Void)
  • PlanetKitCall class 1-to-1 call

    PreviousPlanetKit 5.5
    func acceptCall(mediaType: PlanetKitMediaType, usePreparation: Bool, initData: String?)func acceptCall(startMessage: PlanetKitCallStartMessage?, useResponderPreparation: Bool, recordOnCloud: Bool = false, initialMyVideoState: PlanetKitInitialMyVideoState = .resume)
    func holdCall(reason: String?, pauseRecv: Bool, completion: @escaping (Bool)->Void)func hold(reason: String?, completion: @escaping (Bool)->Void)
    func unholdCall(completion: @escaping (Bool)->Void)func unhold(completion: @escaping (Bool)->Void)
    func endCall(normalUserCode: String)func endCall(normalUserReleaseCode: String)
    func endCall(errorUserCode: String)func endCall(errorUserReleaseCode: String)
    func setSpkModifier(_ spkModifier: PlanetKitAudioSpkPlayDelegate)
    func resetSpkModifier()
    weak var spkModifier: PlanetKitAudioSpkPlayDelegate? { get set }
    func setSpkReceiver(_ spkReceiver: PlanetKitAudioSpkPlayDelegate)
    func resetSpkReceiver()
    weak var spkReceiver: PlanetKitAudioSpkPlayDelegate? { get set }
    func setMicModifier(_ micModifier: PlanetKitAudioMicCaptureDelegate)
    func resetMicModifier()
    weak var micModifier: PlanetKitAudioMicCaptureDelegate? { get set }
    func setMicReceiver(_ micReceiver: PlanetKitAudioMicCaptureDelegate)
    func resetMicReceiver()
    weak var micReceiver: PlanetKitAudioMicCaptureDelegate? { get set }
    func setSpkVolumeReceiver(_ volumeReceiver: PlanetKitAudioSpkVolumeDelegate, interval: TimeInterval)
    func resetSpkVolumeReceiver()
    weak var peerAudioDescriptionReceiver: PlanetKitPeerAudioDescriptionDelegate? { get set }
    func setMicVolumeReceiver(_ volumeReceiver: PlanetKitAudioMicVolumeDelegate, interval: TimeInterval)
    func resetMicVolumeReceiver()
    weak var myAudioDescriptionReceiver: PlanetKitMyAudioDescriptionDelegate? { get set }
    func setMyVideoModifier(_ videoModifier: PlanetKitVideoModifierDelegate)
    func resetMyVideoModifier()
    weak var myVideoModifier: PlanetKitVideoModifierDelegate? { get set }
    func setMyVideoReceiver(_ videoReceiver: PlanetKitVideoOutputDelegate)
    func resetMyVideoReceiver()
    weak var myVideoStream: PlanetKitVideoStream { get } { get set }
    let audio: PlanetKitAudioManager?let audioManager: PlanetKitAudioManager
    var delegate: PlanetKitCallDelegate? { get set }weak var delegate: PlanetKitCallDelegate? { get }
  • PlanetKitConference class Group call

    PreviousPlanetKit 5.5
    func setSpkModifier(_ spkModifier: PlanetKitAudioSpkPlayDelegate)
    func resetSpkModifier()
    weak var spkModifier: PlanetKitAudioSpkPlayDelegate? { get set }
    func setSpkReceiver(_ spkReceiver: PlanetKitAudioSpkPlayDelegate)
    func resetSpkReceiver()
    weak var spkReceiver: PlanetKitAudioSpkPlayDelegate? { get set }
    func setMicModifier(_ micModifier: PlanetKitAudioMicCaptureDelegate)
    func resetMicModifier()
    weak var micModifier: PlanetKitAudioMicCaptureDelegate? { get set }
    func setMicReceiver(_ micReceiver: PlanetKitAudioMicCaptureDelegate)
    func resetMicReceiver()
    weak var micReceiver: PlanetKitAudioMicCaptureDelegate? { get set }
    func setSpkVolumeReceiver(_ volumeReceiver: PlanetKitAudioSpkVolumeDelegate, interval: TimeInterval)
    func resetSpkVolumeReceiver()
    weak var peerAudioDescriptionReceiver: PlanetKitPeerAudioDescriptionDelegate? { get set }
    func setMicVolumeReceiver(_ volumeReceiver: PlanetKitAudioMicVolumeDelegate, interval: TimeInterval)
    func resetMicVolumeReceiver()
    weak var myAudioDescriptionReceiver: PlanetKitMyAudioDescriptionDelegate? { get set }
    func setMyVideoModifier(_ videoModifier: PlanetKitVideoModifierDelegate)
    func resetMyVideoModifier()
    weak var myVideoModifier: PlanetKitVideoModifierDelegate? { get set }
    func setMyVideoReceiver(_ videoReceiver: PlanetKitVideoOutputDelegate)
    func resetMyVideoReceiver()
    weak var myVideoStream: PlanetKitVideoStream { get } { get set }
    let audio: PlanetKitAudioManager?let audioManager: PlanetKitAudioManager
    var delegate: PlanetKitConferenceDelegate? { get set }weak var delegate: PlanetKitConferenceDelegate? { get }
    func sendShortData(targets: [PlanetKitUserId]?, type: String, data: Data, completion: @escaping (Bool)->Void)func sendShortData(peerId: PlanetKitUserId, type: String, data: Data, completion: @escaping (Bool)->Void)
    func enableVideo(completion: @escaping (Bool)->Void)func enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = .resume, completion: @escaping (Bool)->Void)
    func disableVideo(reason: PlanetKitMediaDisableReason, stopCamera: Bool = true, completion: @escaping (Bool)->Void)func disableVideo(stopCamera: Bool = true, completion: @escaping (Bool)->Void)
  • PlanetKitMyAudioDescriptionDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)func myAudioDescriptionDidUpdate(_ description: PlanetKitMyAudioDescription)
  • PlanetKitAudioDeviceVolumeDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)func volumeDidUpdate(_ deviceType: PlanetKitAudioDeviceType, volume: Float)
  • PlanetKitPeerAudioDescription class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioSpkVolumeMeter.userId, PlanetKitAudioSpkVolumeMeter.serviceIdlet peerId: PlanetKitUserId
    PlanetKitAudioSpkVolumeMeter.averageLevellet averageVolumeLevel: Int8
    PlanetKitConferenceDelegate.subgroupPeerAudioDidChange(_:peer:audioSubgroupName:oldName:)let sentSubgroupName: String?
    PlanetKitConferenceDelegate.subgroupPeerAudioDidChange(_:peer:audioTaggedSubgroupName:oldName:)let taggedSubgroupName: String?
  • PlanetKitPeerAudioDescriptionDelegate protocol 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    PlanetKitAudioSpkVolumeDelegate.didRefreshSpkVolumeMeter(_ :level:)func peerAudioDescriptionsDidUpdate(_ descriptions: [PlanetKitPeerAudioDescription], averageVolumeLevel: Int8)
  • PlanetKitInitialSettingBuilder class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    func withEnableKitLogKey(level: PlanetKitLogLevel, module: PlanetKitLogModule) -> PlanetKitInitialSettingBuilderfunc withEnableKitLogKey(level: PlanetKitLogLevel, enable: Bool) -> PlanetKitInitialSettingBuilder
    func withSetKitLogPathKey(path: String) throws -> PlanetKitInitialSettingBuilderfunc withSetKitBasePathKey(path: String) throws -> PlanetKitInitialSettingBuilder
  • PlanetKitMakeCallSettingBuilder class 1-to-1 call

    PreviousPlanetKit 5.5
    func withEnableScreenSharingKey((broadcastPort: UInt16, broadcastRxToken: String, broadcastTxToken: String) -> PlanetKitMakeCallSettingBuilderfunc withEnableScreenShareKey(broadcastPort : UInt16, broadcastPeerToken: String, broadcastMyToken: String) -> PlanetKitMakeCallSettingBuilder
  • PlanetKitVerifyCallSettingBuilder class 1-to-1 call

    PreviousPlanetKit 5.5
    func withEnableScreenSharingKey(broadcastPort: UInt16, broadcastRxToken: String, broadcastTxToken: String) -> PlanetKitVerifyCallSettingBuilderfunc withEnableScreenShareKey(broadcastPort : UInt16, broadcastPeerToken: String, broadcastMyToken: String) -> PlanetKitVerifyCallSettingBuilder
  • PlanetKitJoinConferenceSettingBuilder class Group call

    PreviousPlanetKit 5.5
    func withEnableScreenSharingKey(broadcastPort: UInt16, broadcastRxToken: String, broadcastTxToken: String) -> PlanetKitJoinConferenceSettingBuilderfunc withEnableScreenShareKey(broadcastPort: UInt16, broadcastPeerToken: String, broadcastMyToken: String) -> PlanetKitJoinConferenceSettingBuilder
  • PlanetKitCallKitParam class 1-to-1 call

    PreviousPlanetKit 5.5
    init(appName: String?, callerName: String, isVideo: Bool, ringtoneSound: URL?, icon: String?, addCallToList: Bool)init(appName: String?, callerName: String, isVideo: Bool, ringtoneSound: URL?, icon: String?, addCallToList: Bool, supportsHolding: Bool, useResponderPreparation: Bool = false, startMessage: PlanetKitCallStartMessage? = nil)
  • PlanetKitCallDirection enum 1-to-1 call

    PreviousPlanetKit 5.5
    case incommingcase incoming
  • PlanetKitCallDelegate protocol 1-to-1 call

    PreviousPlanetKit 5.5
    func callDidWaitConnect(_ call: PlanetKitCall)func didWaitConnect(_ call: PlanetKitCall)
    func callDidConnect(_ call: PlanetKitCall)func didConnect(_ call: PlanetKitCall, connected: PlanetKitCallConnectedParam)
    func callDidDisconnect(_ call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?)func didDisconnect(_ call: PlanetKitCall, disconnected: PlanetKitDisconnectedParam)
    func callDidVerify(_ call: PlanetKitCall, initData: String?)func didVerify(_ call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Bool)
    func callDidPreparationFinish(_ call: PlanetKitCall)func didFinishPreparation(_ call: PlanetKitCall)
    func networkDidUnavailble(_ call: PlanetKitCall, isPeer: Bool, willDisconnected seconds: TimeInterval)func networkDidUnavailable(_ call: PlanetKitCall, isPeer: Bool, willDisconnected seconds: TimeInterval)
    func networkDidReavilable(_ call: PlanetKitCall, isPeer: Bool)func networkDidReavailable(_ call: PlanetKitCall, isPeer: Bool)
    func peerVideoDidEnable(_ call: PlanetKitCall)func videoEnabledByPeer(_ call: PlanetKitCall)
    func peerVideoDidDisable(_ call: PlanetKitCall, reason: PlanetKitMediaDisableReason)func videoDisabledByPeer(_ call: PlanetKitCall, reason: PlanetKitMediaDisableReason)
    func didDetectCamNoSrc(_ call: PlanetKitCall)func didDetectMyVideoNoSource(_ call: PlanetKitCall)
    func shortDataDidReceive(_ call: PlanetKitCall, dataType: String, data: Data)func didReceiveShortData(_ call: PlanetKitCall, dataType: String, data: Data)
    func peerDidRequestMyMute(_ call: PlanetKitCall, mute: Bool)func myMuteRequestedByPeer(_ call: PlanetKitCall, mute: Bool)
    func callDataSessionIncoming(_ call: PlanetKitCall, streamId: PlanetKitDataSessionStreamId, type: PlanetKitDataSessionType)func dataSessionIncoming(_ call: PlanetKitCall, streamId: PlanetKitDataSessionStreamId, type: PlanetKitDataSessionType)
    func callDidStartMyBroadcast(_ call: PlanetKitCall)func didStartMyBroadcast(_ call: PlanetKitCall)
    func callDidFinishMyBroadcast(_ call: PlanetKitCall)func didFinishMyBroadcast(_ call: PlanetKitCall)
    func callDidErrorMyBroadcast(_ call: PlanetKitCall, error: PlanetKitScreenShare.BroadcastError)func didErrorMyBroadcast(_ call: PlanetKitCall, error: PlanetKitScreenShare.BroadcastError)
  • PlanetKitStartFailReason enum 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    case kitInternalInitializaionError = 2999case kitInternalInitializationError = 2999
  • PlanetKitScreenShare.BroadcastError enum 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    case kitInternalInitializaionErrorcase kitInternalInitializationError
  • PlanetKitAudio class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    var isBluethoothInput: Bool { get }var isBluetoothInput: Bool { get }
  • PlanetKitScreenShare.BroadcastError enum 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    case unknowcase unknown
  • PlanetKitConfenreceVideoUpdatedPeer class → PlanetKitConferenceVideoUpdatedPeer class Group call

  • PlanetKitCallParam class 1-to-1 call

    PreviousPlanetKit 5.5
    var stid: String? { get set }var appServerData: String? { get set }
    var initData: String? { get set }var startMessage: PlanetKitCallStartMessage? { get set }
    init(appName: String?, callerName: String, isVideo: Bool, ringtoneSound: URL?, icon: String?, addCallToList: Bool, supportsHolding: Bool, useResponderPreparation: Bool = false, initData: PlanetKitInitData? = nil)init(appName: String?, callerName: String, isVideo: Bool, ringtoneSound: URL?, icon: String?, addCallToList: Bool, supportsHolding: Bool, useResponderPreparation: Bool = false, startMessage: PlanetKitCallStartMessage? = nil)
  • PlanetKitConferenceParam class Group call

    PreviousPlanetKit 5.5
    var stid: String? { get set }var appServerData: String? { get set }
  • PlanetKitSendDataSession class → PlanetKitOutboundDataSession class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    typealias Completion = (_ dataSession: PlanetKitSendDataSession?, _ success: Bool, _ description: String?)->Voidtypealias Completion = (_ dataSession: PlanetKitOutboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void
  • PlanetKitRecvDataSession class → PlanetKitInboundDataSession class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    typealias Completion = (_ dataSession: PlanetKitRecvDataSession?, _ success: Bool, _ description: String?)->Voidtypealias Completion = (_ dataSession: PlanetKitInboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void
  • PlanetKitDisconnectReason enum 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    case serviceAPIKeyError = 1501case serviceAccessTokenError = 1501
  • PlanetKitVideoBuffer class 1-to-1 callGroup call

    PreviousPlanetKit 5.5
    init(sampleBuffer: CMSampleBuffer?, timestamp: CMTime, rotation: PlanetKitVideoRotation, mirrored: Bool, sender: PlanetKitUserId?, source: PlanetKitVideoSource)init(sampleBuffer: CMSampleBuffer?, timestamp: CMTime, rotation: PlanetKitVideoRotation, position: PlanetKitCameraPosition, sender: PlanetKitUserId?, source: PlanetKitVideoSource)
    init(pixelBuffer: CVPixelBuffer?, sampleBuffer: CMSampleBuffer?, timestamp: CMTime, rotation: PlanetKitVideoRotation, mirrored: Bool, sender: PlanetKitUserId?, source: PlanetKitVideoSource)init(pixelBuffer: CVPixelBuffer?, sampleBuffer: CMSampleBuffer?, timestamp: CMTime, rotation: PlanetKitVideoRotation, position: PlanetKitCameraPosition, sender: PlanetKitUserId?, source: PlanetKitVideoSource)
  • PlanetKitCameraFrameRate class → PlanetKitFrameRate class 1-to-1 callGroup call

Added

  • PlanetKitPeerControlDelegate protocol Group call
  • PlanetKitPeerControl class Group call
  • PlanetKitVolumeLevel class Group call
  • PlanetKitScreenShareStatus class Group call
  • PlanetKitVideoPauseReason enum 1-to-1 callGroup call
    • case unknown
  • PlanetKitNSErrorCode enum Group call
  • PlanetKitCCParam class 1-to-1 call
  • PlanetKitManager class Group call
    • var conference: PlanetKitConference? { get }
  • PlanetKitScreenCaptureWindow class 1-to-1 callGroup call
    • var bundleId: String? { get }
    • var hasMultipleWindows: Bool
  • PlanetKitAudioSpkControllable protocol 1-to-1 callGroup call
    • func setMode(_ mode: AVAudioSession.Mode)
  • PlanetKitCallKitParam class 1-to-1 call
    • let supportsHolding: Bool
  • PlanetKitStartFailReason enum 1-to-1 callGroup call
    • case tooLongAppServerData = 11
  • PlanetKitAudioSessionSettings class 1-to-1 callGroup call
  • PlanetKitAudio class 1-to-1 callGroup call
    • var defaultIOBufDuration: Float64
    • var defaultMicSampleRate: Float64
    • var defaultSpkSampleRate: Float64
    • var openSettings: PlanetKitAudioSessionSettings? { get set }
    • var closeSettings: PlanetKitAudioSessionSettings? { get set }
  • PlanetKitDataSessionFailReason enum 1-to-1 callGroup call
    • case none = 0
    • case internal = 1
    • case notIncoming = 3
    • case alreadyExist = 4
    • case invalidId = 5
    • case invalidType = 6
  • PlanetKitDataSessionControllable protocol 1-to-1 callGroup call
    • func getOutboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitOutboundDataSession?
    • func getInboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitInboundDataSession?
  • PlanetKitConferencePeer class Group call
    • let sharedContents: PlanetKitSharedContents?
  • PlanetKitSharedContents class 1-to-1 callGroup call
    • let data: Data
    • let elapsedSeconds: TimeInterval
  • PlanetKitCallConnectedParam class 1-to-1 call
  • PlanetKitCallKitParam class 1-to-1 call
    • let useResponderPreparation: Bool
    • let startMessage: PlanetKitCallStartMessage?
    • let recordOnCloud: Bool
  • PlanetKitCallStartMessage class 1-to-1 call
  • PlanetKitMyAudioDescription class 1-to-1 callGroup call
    • let destinationSubgroupName: String?
    • let taggedSubgroupName: String?
  • PlanetKitDisconnectSource enum 1-to-1 callGroup call
  • PlanetKitDisconnectedParam enum 1-to-1 callGroup call
  • PlanetKitDisconnectReason enum 1-to-1 callGroup call
    • case internalError = 1109
    • case userError = 1110
    • case internalKitError = 1111
    • case micNoSource = 1112
    • case maxCallTimeExceeded = 1208
    • case unavailableNetwork = 1308
    • case appDestroy = 1309
    • case systemSleep = 1310
    • case systemLogOff = 1311
    • case mtuExceeded = 1312
    • case appServerDataError = 1313
    • case desktopScreenLocked = 1314
    • case serviceTooManyRequests = 1512
  • PlanetKitScreenInterruptDelegate protocol 1-to-1 callGroup call
    • func scrDidInterruptBoundsChange(_ device: PlanetKitScreenCaptureDevice, window: PlanetKitScreenCaptureWindow)
  • PlanetKitCallState enum 1-to-1 call
    • case verified
  • PlanetKitMTKView class 1-to-1 callGroup call
    • var mirroredType: PlanetKitMirroredType { get set }
    • var rotation: PlanetKitVideoRotation { get set }
  • PlanetKitVideoCaptureDeviceInfo class 1-to-1 callGroup call
    • var rotation: PlanetKitVideoRotation { get set }
  • PlanetKitVideoBuffer class 1-to-1 callGroup call
    • var position: PlanetKitCameraPosition { get set }
  • PlanetKitRecordOnCloudDeactivateReason enum 1-to-1 call
    • case internal = 0
    • case activationFailed = 1
  • PlanetKitRecordOnCloudUpdatedParam class 1-to-1 call
    • let activated: Bool
    • let deactivated: PlanetKitRecordOnCloudDeactivateReason
  • PlanetKitCallParam class 1-to-1 call
    • var recordOnCloud: Bool { get set }
    • var initialMyVideoState: PlanetKitInitialMyVideoState { get set }
  • PlanetKitConferenceParam class Group call
    • var initialMyVideoState: PlanetKitInitialMyVideoState { get set }
  • PlanetKitCallDelegate protocol 1-to-1 call
    • func recordOnCloudDidUpdate(_ call: PlanetKitCall, updated: PlanetKitRecordOnCloudUpdatedParam)
    • func myScreenShareDidStopByHold(_ conference: PlanetKitConference)
  • PlanetKitCall class 1-to-1 call
    • var isPeerAudioMuted: Bool { get }
    • var isRecordOnCloudActivated: Bool { get }
    • func setMyScreenShareVideoShareMode(enable: Bool) -> Bool
    • var isMyScreenShareVideoShareModeEnabled: Bool { get }
    • var myMediaStatus: PlanetKitMyMediaStatus { get }
    • var isHookMyAudioEnabled: Bool { get }
    • func enableHookMyAudio(delegate: PlanetKitCallHookedAudioDelegate, completion: @escaping (Bool)->Void)
    • func disableHookMyAudio(completion: @escaping (Bool)->Void)
    • func putHookedMyAudioBack(audio: PlanetKitHookedAudio) -> Bool
    • var myVideoStream: PlanetKitVideoStream! { get }
    • var myScreenShareStream: PlanetKitVideoStream! { get }
  • PlanetKitLogLevel enum 1-to-1 callGroup call
    • case detailed = 5
    • case simple = 4
    • case silent = 0
  • PlanetKitLogSizeLimit enum 1-to-1 callGroup call
    • case small = 0
    • case medium = 1
    • case large = 2
    • case unlimited = 3
  • PlanetKitMyMediaStatusDelegate protocol Group call
  • PlanetKitMyMediaStatus class Group call
  • PlanetKitConferenceDelegate protocol Group call
    • func myScreenShareDidStopByHold(_ conference: PlanetKitConference)
  • PlanetKitConference class Group call
    • func createPeerControl(peer: PlanetKitConferencePeer) -> PlanetKitPeerControl?
    • var myMediaStatus: PlanetKitMyMediaStatus { get }
    • func setMyScreenShareVideoShareMode(enable: Bool) -> Bool
    • var isMyScreenShareVideoShareModeEnabled: Bool { get }
    • var myVideoStream: PlanetKitVideoStream! { get }
    • var myScreenShareStream: PlanetKitVideoStream! { get }
  • PlanetKitConferenceConnectedParam class Group call
    • let isVideoHwCodecEnabled: Bool
    • let isVideoShareModeSupported: Bool
  • PlanetKitVirtualBackgroundType enum 1-to-1 callGroup call
  • PlanetKitVirtualBackground class 1-to-1 callGroup call
  • PlanetKitAudioDevice class 1-to-1 callGroup call
    • var isCapturable: Bool { get }
    • var isPlayable: Bool { get }
  • PlanetKitMakeCallSettingBuilder class 1-to-1 call
    • func withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitMakeCallSettingBuilder
    • func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitMakeCallSettingBuilder
    • func withPlayEndToneRegardlessOfCallStateKey(enable: Bool) throws -> PlanetKitMakeCallSettingBuilder
  • PlanetKitVerifyCallSettingBuilder class 1-to-1 call
    • func withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitVerifyCallSettingBuilder
    • func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitVerifyCallSettingBuilder
    • func withPlayEndToneRegardlessOfCallStateKey(enable: Bool) throws -> PlanetKitVerifyCallSettingBuilder
  • PlanetKitJoinConferenceSettingBuilder class Group call
    • func withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitJoinConferenceSettingBuilder
    • func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitJoinConferenceSettingBuilder
    • func withPlayEndToneRegardlessOfConferenceStateKey(enable: Bool) throws -> PlanetKitJoinConferenceSettingBuilder
  • PlanetKitInitialMyVideoState enum 1-to-1 call
    • case resume
    • case pause
  • PlanetKitHookedAudio class 1-to-1 call
    • var sampleRate: UInt32 { get }
    • var channel: UInt32 { get }
    • var sampleType: PlanetKitAudioSampleType { get }
    • var sampleCount: UInt32 { get }
    • var seq: Int64 { get }
    • var data: Data { get set }
  • PlanetKitCallHookedAudioDelegate protocol 1-to-1 call
    • func didHook(_ call: PlanetKitCall, audio: PlanetKitHookedAudio)
  • PlanetKitVideoStream class 1-to-1 callGroup call
    • init()
  • PlanetKitVideoStreamDelegate protocol 1-to-1 callGroup call
  • PlanetKitScreenControllable protocol 1-to-1 callGroup call
    • weak var delegate: PlanetKitVideoOutputDelegate? { get set }
  • PlanetKitFpsLimitUpdateDelegate protocol 1-to-1 callGroup call

Removed

  • PlanetKitConferencePeerInfo class Group call
  • PlanetKitConferencePeerState class Group call
  • PlanetKitSubgroup class Group call
    • var peerInfos: [PlanetKitConferencePeerInfo] { get }
  • PlanetKitLogStorage class 1-to-1 callGroup call
  • PlanetKitLogStorageType enum 1-to-1 callGroup call
  • PlanetKitManager class 1-to-1 callGroup call
    • func makeLogStorage(type: PlanetKitLogStorageType, maxSize: Int) throws -> PlanetKitLogStorage
  • PlanetKitInitialSettingBuilder class 1-to-1 callGroup call
    • func withEnableKitDebugKey(debugSetting: Dictionary<String, String>) -> PlanetKitInitialSettingBuilder
  • PlanetKitConferencePeerHold class Group call
    • let peerPausedRecv: Bool
  • PlanetKitConferenceDelegate protocol Group call
    • func subgroupPeerVideoDidChange(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, videoSubgroupName: String?, oldName: String?)
    • func subgroupPeerVideoDidChange(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, videoTaggedSubgroupName: String?, oldName: String?)
    • func subgroupPeerAudioDidChange(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, audioSubgroupName: String?, oldName: String?)
    • func subgroupPeerAudioDidChange(_ conference: PlanetKitConference, peerInfo: PlanetKitConferencePeerInfo, audioTaggedSubgroupName: String?, oldName: String?)
  • PlanetKitSubgroupManager class Group call
    • var myVideoTaggedSubgroupName: String? { get }
    • func tagMainRoomVideoSend(taggedSubgroupName: String?, completion: @escaping (Bool) -> Void)
  • PlanetKitCall class 1-to-1 call
    • let micVolumeLevel: Int8
    • let spkVolumeLevel: Int8
    • var mic: PlanetKitAudioMicControllable
    • var spk: PlanetKitAudioSpkControllable
    • let disconnectByRemote: Bool
    • func setMyViewDelegate(_ videoOutDelegate: PlanetKitVideoOutputDelegate)
    • func resetMyViewDelegate()
    • func setPeerViewDelegate(_ videoOutDelegate: PlanetKitVideoOutputDelegate)
    • func resetPeerViewDelegate()
    • let myScreenShareSendCapability: PlanetKitVideoCapability
    • var isMyVideoInterrupted: Bool
    • func declineCall()
    • var isMyVideoInterrupted: Bool
    • var hold: Bool { get }
  • PlanetKitConference class Group call
    • let micVolumeLevel: Int8
    • let spkVolumeLevel: Int8
    • var mic: PlanetKitAudioMicControllable
    • var spk: PlanetKitAudioSpkControllable
    • let isHighPriorityAudio: Bool
    • func setHighPriorityAudioSend(_ isHighPriority: Bool, completion: @escaping (Bool)->Void)
    • let roomType: PlanetKitConferenceRoomType
    • var myVideoStatus: PlanetKitVideoStatus { get }
    • var isMyAudioMuted: Bool { get }
    • let myScreenShareSendCapability: PlanetKitVideoCapability
    • var isMyVideoInterrupted: Bool
    • func getActiveVideoPeer(peerId: PlanetKitUserId) -> PlanetKitConferencePeer?
    • func getActiveScreenSharePeer(peerId: PlanetKitUserId) -> PlanetKitConferencePeer?
    • var isMyVideoInterrupted: Bool
    • var hold: Bool { get }
    • func isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
  • PlanetKitAudio class 1-to-1 callGroup call
    • func change(mic: PlanetKitAudioMicControllable?)
    • func change(spk: PlanetKitAudioSpkControllable?)
    • func setAudioSessionHandler(_ handler: PlanetKitAudioSessionHandler?)
    • func setDefaultSampleRate(mic: Float64)
    • func setDefaultSampleRate(spk: Float64)
  • PlanetKitConferenceDelegate protocol Group call
    • peersVideoDidPause(_ conference: PlanetKitConference, videoPauses: [PlanetKitConferencePeerVideoPause])
    • peersVideoDidResume(_ conference: PlanetKitConference, peers: [PlanetKitConferencePeer])
  • PlanetKitSendDataSessionDelegate protocol 1-to-1 callGroup call
    • func sendDataSessionDidUnsupport(_ session: PlanetKitSendDataSession)
  • PlanetKitRecvDataSessionDelegate protocol 1-to-1 callGroup call
    • func recvDataSessionDidTooLongQueuedData(_ session: PlanetKitRecvDataSession, enabled: Bool)
    • func recvDataSessionDidUnsupport(_ session: PlanetKitRecvDataSession)
  • PlanetKitDisconnectReason enum 1-to-1 callGroup call
    • case micNoSrcByLocal = 1101
    • case micNoSrcByRemote = 1102
    • case internalErrorByLocal = 1103
    • case internalErrorByRemote = 1104
    • case userErrorByLocal = 1105
    • case userErrorByRemote = 1106
    • case internalKitErrorByLocal = 1107
    • case internalKitErrorByRemote = 1108
    • case unavailableNetworkInCall = 1307
    • case wrongRoomAttribute = 1403
  • PlanetKitCallState enum 1-to-1 call
    • case answered
  • PlanetKitConferenceParam class Group call
    • var roomType: PlanetKitConferenceRoomType { get set }
  • PlanetKitConferenceRoomType enum Group call
  • PlanetKitVideoCaptureDevice class 1-to-1 callGroup call
    • var preferredMirrored: NSNumber? { get set }
  • PlanetKitCamera class 1-to-1 callGroup call
    • static func getVideoRotation(orientation:mirrored:)
  • PlanetKitVideoBuffer class 1-to-1 callGroup call
    • var mirrored : Bool { get set }
  • PlanetKitLogLevel enum 1-to-1 callGroup call
    • case info = 5
    • case error = 2
    • case critical = 1
    • case none = 0
  • PlanetKitAudioSessionHandler protocol 1-to-1 callGroup call
  • PlanetKitAudioSessionContext class 1-to-1 callGroup call
  • PlanetKitVideoCapability class 1-to-1 callGroup call
    • static var callScreenShareSendDefault: PlanetKitVideoCapability
    • static var conferenceScreenShareSendDefault: PlanetKitVideoCapability
  • PlanetKitMakeCallSettingBuilder class 1-to-1 call
    • func withMyScreenShareSendCapabilityKey(capability: PlanetKitVideoCapability) -> PlanetKitMakeCallSettingBuilder
  • PlanetKitVerifyCallSettingBuilder class 1-to-1 call
    • func withMyScreenShareSendCapabilityKey(capability: PlanetKitVideoCapability) -> PlanetKitVerifyCallSettingBuilder
  • PlanetKitJoinConferenceSettingBuilder class Group call
    • func withMyScreenShareSendCapabilityKey(capability: PlanetKitVideoCapability) -> PlanetKitJoinConferenceSettingBuilder
    • func withDisconnectBadNetwork(enable: Bool) -> PlanetKitJoinConferenceSettingBuilder
  • PlanetKitMediaDisableReason enum 1-to-1 callGroup call
    • case noMediaSrc
    • case noRecvMedia
  • PlanetKitSubgroup class Group call
    • func isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
  • PlanetKitScreenControllable protocol 1-to-1 callGroup call
    • func addReceiver(_ videoOutDelegate: PlanetKitVideoOutputDelegate)
    • func removeReceiver(_ videoOutDelegate: PlanetKitVideoOutputDelegate)
    • func setModifier(_ videoModifier: PlanetKitVideoModifierDelegate?)