본문으로 건너뛰기

PlanetKit 4.4에서 5.5로 마이그레이션하기

PlanetKit 4.4에서 PlanetKit 5.5로 마이그레이션하기 위한 절차와 고려 사항을 상세히 설명합니다.

요구 사항

Swift Package Manager

Swift Package Manager(SPM)를 사용하고 있다면, 다음 저장소 URL을 Xcode 프로젝트의 패키지 종속 항목에 추가하세요.

패키지 종속 항목을 추가하는 방법에 대한 자세한 정보는 Apple Developer 문서를 참조하세요.

CocoaPods

CocoaPods를 계속 사용하려면 기존의 PlanetKit-iOS 또는 PlanetKit-macOS Pod를 PlanetKit-SDK-Apple로 변경하세요.

다음 Podfile은 예시입니다.

## 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

마이그레이션

Breaking change 카메라 제어 개선

PlanetKit이 Planet Cloud에 데이터를 전송할 때만 카메라를 켜도록 개선했습니다.

API 변경

변경
  • PlanetKitCall class 1-to-1 call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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 }
추가
  • 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
삭제
  • 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

예제 코드

카메라 미리보기 시작
  • 이전 버전의 예제 코드

    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) {
    ....
    }
    }
  • 신규 버전의 예제 코드

    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) {
    ....
    }
    }
다른 카메라 장치로 전환
  • 이전 버전의 예제 코드

    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)
    }
    }
  • 신규 버전의 예제 코드

    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)
    }
    }
로컬 사용자 비디오 뷰에 대한 수신 모듈(receiver) 추가
  • 이전 버전의 예제 코드

    class VideoViewController: UIViewController {
    ....

    var call: PlanetKitCall!
    var myVideoView: PlanetKitMTKView!

    private func setMyVideo() {
    call.setMyVideoReceiver(myVideoView)
    }
    }
  • 신규 버전의 예제 코드

    class VideoViewController: UIViewController {
    ....

    var call: PlanetKitCall!
    var myVideoView: PlanetKitMTKView!

    private func setMyVideo() {
    call.myVideoStream.addReceiver(myVideoView)
    }
    }
커스텀 카메라를 비디오 소스로 사용
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 PlanetKitConferencedisableVideo()에서 reason 파라미터를 제거

  • PlanetKitConferencedisableVideo 함수의 reason 파라미터는 사용되지 않기 때문에 제거했습니다.
  • PlanetKitMediaDisableReason에서 사용되지 않는 열거형 값을 제거했습니다.

API 변경

변경
  • PlanetKitConference class Group call

    이전 버전PlanetKit 5.5
    func disableVideo(reason: PlanetKitMediaDisableReason, stopCamera: Bool = true, completion: @escaping (Bool)->Void)func disableVideo(stopCamera: Bool = true, completion: @escaping (Bool)->Void)
삭제
  • PlanetKitMediaDisableReason enum 1-to-1 callGroup call
    • case noMediaSrc
    • case noRecvMedia

Breaking change 오디오 입력/출력 이름 변경

오디오 시스템에서 input/output* 이름이 혼동을 줄 수 있어 mic/spk*로 변경했습니다.

API 변경

변경
  • PlanetKitAudioDeviceType enum 1-to-1 callGroup call

    이전 버전PlanetKit 5.5
    PlanetKitAudioDirection.input.mic
    PlanetKitAudioDirection.output.spk
  • PlanetKitAudioDeviceChangeDelegate enum 1-to-1 callGroup call

    이전 버전PlanetKit 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

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

    이전 버전PlanetKit 5.5
    var inputDevice: PlanetKitAudioDevice? { get }var micDevice: PlanetKitAudioDevice? { get }
  • PlanetKitAudioSpkControllable protocol 1-to-1 callGroup call

    이전 버전PlanetKit 5.5
    var outputDevice: PlanetKitAudioDevice? { get }var spkDevice: PlanetKitAudioDevice? { get }
  • PlanetKitAudio class 1-to-1 callGroup call

    이전 버전PlanetKit 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 오디오 설명 추가

오디오 볼륨 레벨을 오디오 설명(audio description)으로 대체했습니다.

오디오 설명은 오디오 프레임 데이터가 수신될 때 함께 제공되며 주기적으로 업데이트되는 정보입니다.

API 변경

변경
  • PlanetKitSubgroupManager class Group call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

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

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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 5.5
    PlanetKitAudioSpkVolumeDelegate.didRefreshSpkVolumeMeter(_ :level:)func peerAudioDescriptionsDidUpdate(_ descriptions: [PlanetKitPeerAudioDescription], averageVolumeLevel: Int8)
추가
  • 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
삭제
  • 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

예제 코드

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
}
}
}

Breaking change 오디오 및 비디오 관련 대리자, 수정 모듈, 수신 모듈의 API 수정

  • 대리자(delegate), 수정 모듈(modifier) 및 수신 모듈(receiver)을 할당 가능한 멤버 변수로 변경하고 해당 setter 함수들을 제거했습니다.

API 변경

변경
  • PlanetKitAudioMicControllable protocol 1-to-1 callGroup call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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 }

예제 코드

로컬 사용자의 오디오에 대한 PlanetKitMyAudioDescriptionDelegate를 설정하는 예제 코드입니다.

// 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 PlanetKitCallPlanetKitConference에서 mic, spk 제거

  • PlanetKitCallPlanetKitConference에서 멤버 변수 mic, spk를 제거했습니다.audioManager를 사용하여 세션의 PlanetKitAudioMicControllablePlanetKitAudioSpkControllable에 접근하세요.

API 변경

변경
  • PlanetKitCall class 1-to-1 call

    이전 버전PlanetKit 5.5
    var audio: PlanetKitAudioManager?var audioManager: PlanetKitAudioManager
  • PlanetKitConference class Group call

    이전 버전PlanetKit 5.5
    var audio: PlanetKitAudioManager?var audioManager: PlanetKitAudioManager
삭제
  • PlanetKitCall class 1-to-1 call

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

    • var mic: PlanetKitAudioMicControllable
    • var spk: PlanetKitAudioSpkControllable

Breaking change PlanetKitAudioSessionHandler 제거

PlanetKitAudioSessionHandler가 제거되었고 오디오 열기 및 닫기 설정을 위한 PlanetKitAudioSessionSettingsPlanetKitAudio에 추가되었습니다.

API 변경

추가
  • PlanetKitAudioSessionSettings class 1-to-1 callGroup call
  • PlanetKitAudio class 1-to-1 callGroup call
    • var openSettings: PlanetKitAudioSessionSettings? { get set }
    • var closeSettings: PlanetKitAudioSessionSettings? { get set }
삭제
  • PlanetKitAudioSessionHandler protocol 1-to-1 callGroup call
  • PlanetKitAudioSessionContext class 1-to-1 callGroup call

예제 코드

AVAudioSession.Category를 오디오 열기 시 playAndRecord로 설정하고 오디오 닫기 시 soloAmbient로 설정하는 예제 코드입니다.

  • 이전 구현

    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()
  • 신규 구현

    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 PlanetKitAudio의 API를 더 직관적으로 개선

  • PlanetKitAudio의 멤버 변수들을 할당 가능하게 만들고 해당 setter 함수들을 제거했습니다.

API 변경

변경
  • PlanetKitAudio class 1-to-1 callGroup call

    이전 버전PlanetKit 5.5
    var spk: PlanetKitAudioSpkControllable? { get }var spk: PlanetKitAudioSpkControllable? { get set }
    var mic: PlanetKitAudioMicControllable? { get }var mic: PlanetKitAudioMicControllable? { get set }
추가
  • PlanetKitAudio class 1-to-1 callGroup call
    • var defaultIOBufDuration: Float64
    • var defaultMicSampleRate: Float64
    • var defaultSpkSampleRate: Float64
삭제
  • 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 통화 연결 파라미터 및 통화 수신 파라미터 개선

  • 1대1 통화 및 그룹 통화 연결과 1대1 통화 수신에 대해 더 자세한 정보를 추가했습니다.
  • 관련 API가 변경되었습니다.

API 변경

변경
  • PlanetKitCallDelegate protocol 1-to-1 call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 5.5
    var isSendVideoHwCodecEnabled { get }var isVideoHwCodecEnabled { get }
  • PlanetKitConference class Group call

    이전 버전PlanetKit 5.5
    var isSendVideoHwCodecEnabled { get }var isVideoHwCodecEnabled { get }
추가
  • PlanetKitCallConnectedParam class 1-to-1 call
  • PlanetKitCallKitParam class 1-to-1 call
    • let useResponderPreparation: Bool
    • let startMessage: PlanetKitCallStartMessage?

Breaking change initData를 대체하는 PlanetKitCallStartMessage 추가

  • PlanetKitCall API에서 사용되던 initData 파라미터를 대체하기 위해 PlanetKitCallStartMessage가 추가되었습니다.
  • PlanetKitCallParam에 설정하기 전에 PlanetKitCallStartMessage를 생성해야 합니다.

API 변경

변경
  • PlanetKitCallDelegate protocol 1-to-1 callGroup call

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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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)
추가
  • PlanetKitCallStartMessage class 1-to-1 call

Breaking change PlanetKitDisconnectReason 업데이트

  • PlanetKitDisconnectReason이 업데이트되었으며, 1대1 통화 및 그룹 통화의 통화 종료 이벤트에 대한 더 많은 정보를 제공하기 위해 PlanetKitDisconnectSourcePlanetKitDisconnectedParam이 추가되었습니다.

API 변경

변경
  • PlanetKitDisconnectReason enum 1-to-1 callGroup call

    이전 버전PlanetKit 5.5
    case serviceAPIKeyErrorcase serviceAccessTokenError
  • PlanetKitCallDelegate protocol 1-to-1 call

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

    이전 버전PlanetKit 5.5
    func conferenceDidLeave(_ conference: PlanetKitConference, reason: PlanetKitDisconnectReason, userCode: String?)func didDisconnect(_ conference: PlanetKitConference, disconnected: PlanetKitDisconnectedParam)
추가
  • 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
삭제
  • 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 로그 수준 및 설정 변경

로그 수준을 재설계하고, 로그 크기를 지정할 수 있도록 수정했습니다.

기본적으로 로그 출력은 silent 로그 수준으로 비활성화됩니다.

배포용 빌드에서 최소한의 로그를 제공하고 싶다면, 로그 수준과 로그 크기를 설정해 주세요.

API 변경

변경
  • PlanetKitInitialSettingBuilder class 1-to-1 callGroup call

    이전 버전PlanetKit 5.5
    func withEnableKitLogKey(level: PlanetKitLogLevel, module: PlanetKitLogModule) -> PlanetKitInitialSettingBuilderfunc withEnableKitLogKey(level: PlanetKitLogLevel, enable: Bool, logSize: PlanetKitLogSizeLimit) -> PlanetKitInitialSettingBuilder
추가
  • 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
삭제
  • 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:)

예제 코드

  • 이전 구현

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

    // Full logging for debugging
    var builder = PlanetKitInitialSettingBuilder()
    .withEnableKitLogKey(level: .info, enable: true)
  • 신규 구현

    // 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 비디오 렌더 뷰에 뷰 미러링 및 회전 추가

PlanetKitMTKView로 비디오를 렌더링할 때 비디오 미러링 및 비디오 회전을 지원하기 위해 PlanetKitMTKView.mirroredPlanetKitMTKView.rotation이 추가되었습니다.

API 변경

변경
  • PlanetKitVideoBuffer class 1-to-1 callGroup call

    이전 버전PlanetKit 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)
추가
  • 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 }
삭제
  • 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 }

예제 코드

전면 카메라의 경우 다음과 같이 미러링 상태를 끌 수 있습니다.

  • 이전 구현

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

    conference.camera?.change(device: device)
  • 신규 구현

    override func viewDidLoad() {
    super.viewDidLoad()

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

Breaking change 데이터 세션용 API 변경

  • 피어가 unsupportInboundDataSession()을 호출해서 세션이 종료될 때 사용되었던 PlanetKitDataSessionFailReasonUNSUPPORTED 이유가 제거되었습니다.
  • 데이터 세션의 종료를 알리기 위한 didClose 콜백이 PlanetKitInboundDataSessionDelegatePlanetKitOutboundDataSessionDelegate에 추가되었습니다.
  • unsupported로 인한 데이터 세션 종료는 didClose 이벤트를 통해서도 감지할 수 있습니다.

API 변경

변경
  • PlanetKitInboundDataSessionDelegate protocol 1-to-1 callGroup call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 5.4
    func outboundDataSessionDidTooLongQueuedData(_ session: PlanetKitOutboundDataSession, enabled: Bool)func didTooLongQueuedData(_ session: PlanetKitOutboundDataSession, enabled: Bool)
추가
  • 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)
삭제
  • PlanetKitDataSessionFailReason enum 1-to-1 callGroup call
    • case unsupported

예제 코드

  • 이전 버전의 예제 코드

    call.makeOutboundDataSession(streamId: stream, type: .reliableMsg, delegate: delegate) { dataSession, failReason in
    if failReason == .unsupported {
    // Earlier versions handle errors here
    }
    ....
    }
  • 신규 버전의 예제 코드

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

Breaking change PlanetKitDataSessionFailReason으로 데이터 세션 기능 업데이트

  • 데이터 세션 실패 정보가 추가되었습니다.
  • 관련 API가 변경되었습니다.

API 변경

변경
  • PlanetKitSendDataSession class → PlanetKitOutboundDataSession class 1-to-1 callGroup call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 5.5
    typealias Completion = (_ dataSession: PlanetKitRecvDataSession?, _ success: Bool, _ description: String?)->Voidtypealias Completion = (_ dataSession: PlanetKitInboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void
추가
  • 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?
삭제
  • 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 통화 일시 중지 기능 변경

통화 일시 중지 요청 시 기존에는 파라미터로 상대방의 비디오 및 오디오 수신을 일시 중지할지 설정했으나, 이제 항상 일시 중지하도록 변경되었습니다.

API 변경

변경
  • PlanetKitCall class 1-to-1 call

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

    이전 버전PlanetKit 5.5
    PlanetKitConferencePeerInfo.holdvar holdStatus: PlanetKitHoldStatus
  • PlanetKitHoldStatus class Group call

    이전 버전PlanetKit 5.5
    PlanetKitHold.isHeldlet isOnHold: Bool
    PlanetKitHold.holdReasonlet holdReason: String?
삭제
  • PlanetKitConferencePeerHold class Group call
    • let peerPausedRecv: Bool

Spec change 통화 일시 중지 기능이 화면 공유 전송을 중지하도록 변경

화면 공유 중에 통화 일시 중지를 요청하면 화면 공유가 중단되고 콜백 이벤트가 발생합니다.

API 변경

추가
  • PlanetKitCallDelegate protocol 1-to-1 call
    • func myScreenShareDidStopByHold(_ conference: PlanetKitConference)
  • PlanetKitConferenceDelegate protocol Group call
    • func myScreenShareDidStopByHold(_ conference: PlanetKitConference)
삭제
  • 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 높은 우선순위 오디오 전송 제거

  • 높은 우선순위 오디오 전송 기능은 더 이상 사용되지 않습니다.

API 변경

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

Spec change PlanetKitCallStateverified 상태 추가

  • 통화 verified 이벤트와 통화 connected/disconnected 이벤트 간의 통화 상태가 waitAnswer 상태에서 verified 상태로 변경되었습니다.
  • 또한 answered 상태가 제거되었습니다.

API 변경

추가
  • PlanetKitCallState enum 1-to-1 call
    • case verified
삭제
  • PlanetKitCallState enum 1-to-1 call
    • case answered

Spec change 방 속성 제거

PlanetKit 5.2부터 방 속성 설정 없이 서브그룹을 생성할 수 있습니다.

API 변경

삭제
  • 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 비디오 캡처 장치에 장치 회전 추가

회전된 카메라 이미지를 다른 참여자에게 보내기 위해 rotation을 사용할 수 있습니다.

API 변경

추가
  • PlanetKitVideoCaptureDeviceInfo class 1-to-1 callGroup call
    • var rotation: PlanetKitVideoRotation { get set }
삭제
  • 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

예제 코드

카메라 영상에 시계 방향 90도 회전을 적용하는 예제 코드입니다.

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

Spec change sendShortData() 사양 변경

  • 그룹 통화에서 짧은 데이터 전송 기능의 멀티캐스트 옵션이 더 이상 사용되지 않습니다. 지원되는 옵션은 유니캐스트와 브로드캐스트입니다.
  • 이전 PlanetKit 버전에서는 데이터 유형의 크기와 짧은 데이터 크기의 합이 900바이트를 초과할 수 없습니다.
  • PlanetKit 5.2부터 데이터 유형의 크기는 100바이트를 초과할 수 없으며, 짧은 데이터의 크기는 800바이트를 초과할 수 없습니다.

API 변경

변경
  • PlanetKitConference class 1-to-1 callGroup call

    이전 버전PlanetKit 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 표시 이름에 제한 적용

  • PlanetKitConferenceParamdisplayName 속성은 이제 null 종료 문자를 포함하여 128바이트로 제한됩니다.
  • 문자열에서 최대 크기를 초과하는 뒷 부분은 버려집니다.

Spec change 데이터 세션 스트림 ID 범위 변경

  • 데이터 세션 스트림 ID 범위 사양이 기존 100~1000에서 100~999로 변경되었습니다.

Spec change 앱 서버 데이터 크기 제한 관련 사양 변경

  • 앱 서버 데이터(기존 stid에서 변경)의 크기 제한이 256바이트에서 4096바이트로 증가되었습니다.

Enhancement requestPeerVideo()stopPeerVideo() 호출 대신 PlanetKitPeerControl 사용

  • 애플리케이션이 PlanetKitConferencePlanetKitConferenceDelegate에 대한 의존성을 줄이고 피어를 위한 뷰/뷰 모델을 설계할 수 있도록 피어 이벤트/메서드 격리를 지원하는 PlanetKitPeerControl이 추가되었습니다.
  • PlanetKitConference.createPeerControl()을 통해 피어에 대한 PlanetKitPeerControl 인스턴스를 생성하면, 해당 인스턴스의 메서드와 이벤트가 특정 피어를 대상으로 작동합니다.
  • 피어에 대해 PlanetKitPeerControlPlanetKitPeerControlDelegate를 사용할 수 있게 되면, PlanetKitPeerControlPlanetKitPeerControlDelegate를 이용하여 피어의 뷰/뷰 모델을 업데이트하고 제어할 수 있습니다. 이렇게 하여 PlanetKitConferenceDelegate에서 피어의 이벤트를 파싱하고 PlanetKitConference의 피어 메서드에 추가 파라미터를 제공해야 하는 필요성을 크게 줄일 수 있습니다.

API 변경

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

예제 코드

  1. PlanetKitPeerControl 속성과 필요한 뷰 속성을 가진 피어 뷰 또는 뷰 모델을 생성하세요.

    class YourPeerView {
    var mtkView: PlanetKitMTKView?
    var peerControl: PlanetKitPeerControl?
    }
  2. PlanetKitPeerControlDelegate 프로토콜을 채택하고 준수하도록 클래스를 확장하세요.

    extension YourPeerView: PlanetKitPeerControlDelegate {
    // implement delegate functions as needed
    }
  3. 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. PlanetKitPeerControl을 등록하세요.

    extension YourPeerView {
    func registerPeerControl() {
    peerControl?.register(delegate: self) { success in
    NSLog("registerPeerControl result: \(success).")
    }
    }
    }
  5. PlanetKitPeerControlDelegate에서 이벤트를 처리하여 피어의 비디오를 재생하세요.

    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. PlanetKitPeerControl의 등록을 해제하세요.

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

Enhancement PlanetKitMyMediaStatus 추가

로컬 사용자의 미디어 상태를 가져오고 PlanetKitMyMediaStatusDelegate를 사용하여 로컬 사용자의 미디어 상태 변경을 관찰하기 위한 PlanetKitMyMediaStatus를 추가했습니다.

API 변경

추가
  • 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 }
삭제
  • PlanetKitConference class Group call
    • var myVideoStatus: PlanetKitVideoStatus { get }
    • var isMyAudioMuted: Bool { get }

예제 코드

  • PlanetKitMyMediaStatus를 사용하여 로컬 사용자의 UI 뷰를 구현하세요.

    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 verifyCall() 호출 시 PlanetKitCCParam 사용하도록 변경

이제 푸시 메시지로 받은 CCParam을 파싱하여 원하는 데이터를 얻을 수 있습니다.

API 변경

변경
  • PlanetKitManager class 1-to-1 call

    이전 버전PlanetKit 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
추가
  • PlanetKitCCParam class 1-to-1 call

예제 코드

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 PlanetKitInitialMyVideoState 추가

PlanetKitInitialMyVideoState는 영상 통화가 활성화될 때 로컬 사용자의 비디오 상태를 결정하기 위해 추가된 열거형 클래스입니다.

  • 이제 초기 비디오 상태를 resume이나 pause로 설정할 수 있습니다.
  • PlanetKitInitialMyVideoState 유형의 속성 또는 파라미터의 기본값은 PlanetKitInitialMyVideoState.RESUME입니다.

API 변경

변경
  • PlanetKitCall class 1-to-1 call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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)
추가
  • 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 변경 목록

변경

  • PlanetKitConferencePeer class Group call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 5.5
    let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer
    let subscribedGroupNames: [String]let subscribedSubgroupNames: [String]
    let unsubscribedGroupNames: [String]let unsubscribedSubgroupNames: [String]
  • PlanetKitConferencePeerHold class Group call

    이전 버전PlanetKit 5.5
    let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer
  • PlanetKitConferencePeerVideoPause class Group call

    이전 버전PlanetKit 5.5
    let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer
  • PlanetKitConferenceSetSharedContent class Group call

    이전 버전PlanetKit 5.5
    let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer
  • PlanetKitManager class 1-to-1 call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 5.5
    PlanetKitHold.isHeldlet isOnHold: Bool
    PlanetKitHold.holdReasonlet holdReason: String?
  • PlanetKitScreen class 1-to-1 callGroup call

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

    이전 버전PlanetKit 5.5
    PlanetKitAudioDirection.inputcase mic
    PlanetKitAudioDirection.outputcase spk
  • PlanetKitAudioDeviceChangeDelegate enum 1-to-1 callGroup call

    이전 버전PlanetKit 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

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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

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

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

    이전 버전PlanetKit 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

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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 5.5
    case incommingcase incoming
  • PlanetKitCallDelegate protocol 1-to-1 call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 5.5
    case kitInternalInitializaionError = 2999case kitInternalInitializationError = 2999
  • PlanetKitScreenShare.BroadcastError enum 1-to-1 callGroup call

    이전 버전PlanetKit 5.5
    case kitInternalInitializaionErrorcase kitInternalInitializationError
  • PlanetKitAudio class 1-to-1 callGroup call

    이전 버전PlanetKit 5.5
    var isBluethoothInput: Bool { get }var isBluetoothInput: Bool { get }
  • PlanetKitScreenShare.BroadcastError enum 1-to-1 callGroup call

    이전 버전PlanetKit 5.5
    case unknowcase unknown
  • PlanetKitConfenreceVideoUpdatedPeer class → PlanetKitConferenceVideoUpdatedPeer class Group call

  • PlanetKitCallParam class 1-to-1 call

    이전 버전PlanetKit 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

    이전 버전PlanetKit 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

    이전 버전PlanetKit 5.5
    case serviceAPIKeyError = 1501case serviceAccessTokenError = 1501
  • PlanetKitVideoBuffer class 1-to-1 callGroup call

    이전 버전PlanetKit 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

추가

  • 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

삭제

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