본문으로 건너뛰기

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 PlanetKitConference의 disableVideo()에서 reason 파라미터를 제거​

  • PlanetKitConference의 disableVideo 함수의 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 PlanetKitCall과 PlanetKitConference에서 mic, spk 제거​

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

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가 제거되었고 오디오 열기 및 닫기 설정을 위한 PlanetKitAudioSessionSettings가 PlanetKitAudio에 추가되었습니다.

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 통화 및 그룹 통화의 통화 종료 이벤트에 대한 더 많은 정보를 제공하기 위해 PlanetKitDisconnectSource 및 PlanetKitDisconnectedParam이 추가되었습니다.

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.mirrored 및 PlanetKitMTKView.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()을 호출해서 세션이 종료될 때 사용되었던 PlanetKitDataSessionFailReason의 UNSUPPORTED 이유가 제거되었습니다.
  • 데이터 세션의 종료를 알리기 위한 didClose 콜백이 PlanetKitInboundDataSessionDelegate 및 PlanetKitOutboundDataSessionDelegate에 추가되었습니다.
  • 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 PlanetKitCallState에 verified 상태 추가​

  • 통화 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 표시 이름에 제한 적용​

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

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

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

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

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

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

  • 애플리케이션이 PlanetKitConference와 PlanetKitConferenceDelegate에 대한 의존성을 줄이고 피어를 위한 뷰/뷰 모델을 설계할 수 있도록 피어 이벤트/메서드 격리를 지원하는 PlanetKitPeerControl이 추가되었습니다.
  • PlanetKitConference.createPeerControl()을 통해 피어에 대한 PlanetKitPeerControl 인스턴스를 생성하면, 해당 인스턴스의 메서드와 이벤트가 특정 피어를 대상으로 작동합니다.
  • 피어에 대해 PlanetKitPeerControl과 PlanetKitPeerControlDelegate를 사용할 수 있게 되면, PlanetKitPeerControl과 PlanetKitPeerControlDelegate를 이용하여 피어의 뷰/뷰 모델을 업데이트하고 제어할 수 있습니다. 이렇게 하여 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?)