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 변경
변경
-
PlanetKitCallclass 1-to-1 call이전 버전 PlanetKit 5.5 func setMyVideoReceiver(_ videoReceiver: PlanetKitVideoOutputDelegate)func resetMyVideoReceiver()var myVideoStream: PlanetKitVideoStream { get } -
Rename
PlanetKitVideoCaptureDevicetoPlanetKitVideoCaptureDeviceInfo1-to-1 callGroup call -
PlanetKitCameraManagerclass 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: PlanetKitCameraInterruptDelegatePlanetKitCamera.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 }
추가
PlanetKitCallclass 1-to-1 callvar myVideoStream: PlanetKitVideoStream! { get }var myScreenShareStream: PlanetKitVideoStream! { get }
PlanetKitConferenceclass Group callvar myVideoStream: PlanetKitVideoStream! { get }var myScreenShareStream: PlanetKitVideoStream! { get }
PlanetKitCameraManagerclass 1-to-1 callGroup callfunc 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)
PlanetKitCameraDelegateprotocol 1-to-1 callGroup callfunc didStart()func didStop(_ error: NSError?)
PlanetKitCustomCameraclass 1-to-1 callGroup callfunc sendVideo(videoBuffer: PlanetKitVideoBuffer)func isVideoSendAvailable() -> Bool
PlanetKitCallclass 1-to-1 callvar peerVideoStream: PlanetKitVideoStream
삭제
PlanetKitCameraclass 1-to-1 callGroup callPlanetKitCameraControllableprotocol 1-to-1 callGroup callPlanetKitCallclass 1-to-1 callvar camera: PlanetKitCameraControllable? { get }func startPreview()func stopPreview()
PlanetKitConferenceclass Group callvar camera: PlanetKitCameraControllable? { get }func startPreview()func stopPreview()
PlanetKitInitialSettingBuilderclass 1-to-1 callGroup callfunc withDisableKitCameraKey(disable: Bool) -> PlanetKitInitialSettingBuilder
PlanetKitMakeCallSettingBuilderclass 1-to-1 callfunc withCustomCameraKey(camera: PlanetKitCameraControllable) -> PlanetKitMakeCallSettingBuilderfunc withCustomCameraStreamKey(videoStream: PlanetKitVideoStream) -> PlanetKitMakeCallSettingBuilder
PlanetKitVerifyCallSettingBuilderclass 1-to-1 callfunc withCustomCameraKey(camera: PlanetKitCameraControllable) -> PlanetKitVerifyCallSettingBuilderfunc withCustomCameraStreamKey(videoStream: PlanetKitVideoStream) -> PlanetKitVerifyCallSettingBuilder
PlanetKitJoinConferenceSettingBuilderclass Group callfunc withCustomCameraKey(camera: PlanetKitCameraControllable) -> PlanetKitJoinConferenceSettingBuilderfunc 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 변경
변경
-
PlanetKitConferenceclass 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)
삭제
PlanetKitMediaDisableReasonenum 1-to-1 callGroup callcase noMediaSrccase noRecvMedia
Breaking change 오디오 입력/출력 이름 변경
오디오 시스템에서 input/output* 이름이 혼동을 줄 수 있어 mic/spk*로 변경했습니다.
API 변경
변경
-
PlanetKitAudioDeviceTypeenum 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioDirection.input.micPlanetKitAudioDirection.output.spk -
PlanetKitAudioDeviceChangeDelegateenum 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) -
PlanetKitAudioVolumeDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 func didChangeVolume(_ direction: PlanetKitAudioDirection, volume: Float)func didChangeVolume(_ type: PlanetKitAudioDeviceType, volume: Float) -
PlanetKitAudioMicControllableprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 var inputDevice: PlanetKitAudioDevice? { get }var micDevice: PlanetKitAudioDevice? { get } -
PlanetKitAudioSpkControllableprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 var outputDevice: PlanetKitAudioDevice? { get }var spkDevice: PlanetKitAudioDevice? { get } -
PlanetKitAudioclass 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: Floatlet outputVolume: Floatlet spkVolume: Floatfunc 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 변경
변경
-
PlanetKitSubgroupManagerclass 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) -
PlanetKitCallclass 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 } -
PlanetKitConferenceclass 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 } -
PlanetKitMyAudioDescriptionDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)func myAudioDescriptionDidUpdate(_ description: PlanetKitMyAudioDescription) -
PlanetKitAudioDeviceVolumeDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)func volumeDidUpdate(_ deviceType: PlanetKitAudioDeviceType, volume: Float) -
PlanetKitPeerAudioDescriptionclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioSpkVolumeMeter.userId, PlanetKitAudioSpkVolumeMeter.serviceIdlet peerId: PlanetKitUserIdPlanetKitAudioSpkVolumeMeter.averageLevellet averageVolumeLevel: Int8PlanetKitConferenceDelegate.subgroupPeerAudioDidChange(_:peer:audioSubgroupName:oldName:)let sentSubgroupName: String?PlanetKitConferenceDelegate.subgroupPeerAudioDidChange(_:peer:audioTaggedSubgroupName:oldName:)let taggedSubgroupName: String? -
PlanetKitPeerAudioDescriptionDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioSpkVolumeDelegate.didRefreshSpkVolumeMeter(_ :level:)func peerAudioDescriptionsDidUpdate(_ descriptions: [PlanetKitPeerAudioDescription], averageVolumeLevel: Int8)
추가
PlanetKitMakeCallSettingBuilderclass 1-to-1 callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitMakeCallSettingBuilderfunc withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitMakeCallSettingBuilder
PlanetKitVerifyCallSettingBuilderclass 1-to-1 callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitVerifyCallSettingBuilderfunc withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitVerifyCallSettingBuilder
PlanetKitJoinConferenceSettingBuilderclass Group callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitJoinConferenceSettingBuilderfunc withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitJoinConferenceSettingBuilder
삭제
PlanetKitConferenceDelegateprotocol Group callfunc 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?)
PlanetKitCallclass 1-to-1 calllet micVolumeLevel: Int8let spkVolumeLevel: Int8
PlanetKitConferenceclass Group calllet micVolumeLevel: Int8let 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 변경
변경
-
PlanetKitAudioMicControllableprotocol 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 -
PlanetKitAudioSpkControllableprotocol 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 -
PlanetKitCallclass 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) -
PlanetKitConferenceclass 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 변경
변경
-
PlanetKitCallclass 1-to-1 call이전 버전 PlanetKit 5.5 var audio: PlanetKitAudioManager?var audioManager: PlanetKitAudioManager -
PlanetKitConferenceclass Group call이전 버전 PlanetKit 5.5 var audio: PlanetKitAudioManager?var audioManager: PlanetKitAudioManager
삭제
-
PlanetKitCallclass 1-to-1 callvar mic: PlanetKitAudioMicControllablevar spk: PlanetKitAudioSpkControllable
-
PlanetKitConferenceclass Group callvar mic: PlanetKitAudioMicControllablevar spk: PlanetKitAudioSpkControllable
Breaking change PlanetKitAudioSessionHandler 제거
PlanetKitAudioSessionHandler가 제거되었고 오디오 열기 및 닫기 설정을 위한 PlanetKitAudioSessionSettings가 PlanetKitAudio에 추가되었습니다.
API 변경
추가
PlanetKitAudioSessionSettingsclass 1-to-1 callGroup callPlanetKitAudioclass 1-to-1 callGroup callvar openSettings: PlanetKitAudioSessionSettings? { get set }var closeSettings: PlanetKitAudioSessionSettings? { get set }
삭제
PlanetKitAudioSessionHandlerprotocol 1-to-1 callGroup callPlanetKitAudioSessionContextclass 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 변경
변경
-
PlanetKitAudioclass 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 }
추가
PlanetKitAudioclass 1-to-1 callGroup callvar defaultIOBufDuration: Float64var defaultMicSampleRate: Float64var defaultSpkSampleRate: Float64
삭제
PlanetKitAudioclass 1-to-1 callGroup callfunc 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 변경
변경
-
PlanetKitCallDelegateprotocol 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) -
PlanetKitCallKitParamclass 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) -
PlanetKitCallclass 1-to-1 call이전 버전 PlanetKit 5.5 var isSendVideoHwCodecEnabled { get }var isVideoHwCodecEnabled { get } -
PlanetKitConferenceclass Group call이전 버전 PlanetKit 5.5 var isSendVideoHwCodecEnabled { get }var isVideoHwCodecEnabled { get }
추가
PlanetKitCallConnectedParamclass 1-to-1 callPlanetKitCallKitParamclass 1-to-1 calllet useResponderPreparation: Boollet startMessage: PlanetKitCallStartMessage?
Breaking change initData를 대체하는 PlanetKitCallStartMessage 추가
PlanetKitCallAPI에서 사용되던initData파라미터를 대체하기 위해PlanetKitCallStartMessage가 추가되었습니다.PlanetKitCallParam에 설정하기 전에PlanetKitCallStartMessage를 생성해야 합니다.
API 변경
변경
-
PlanetKitCallDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 func callDidVerify(_ call: PlanetKitCall, initData: String?)func didVerify(_ call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Bool) -
PlanetKitCallclass 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) -
PlanetKitCallParamclass 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)
추가
PlanetKitCallStartMessageclass 1-to-1 call
Breaking change PlanetKitDisconnectReason 업데이트
PlanetKitDisconnectReason이 업데이트되었으며, 1대1 통화 및 그룹 통화의 통화 종료 이벤트에 대한 더 많은 정보를 제공하기 위해PlanetKitDisconnectSource및PlanetKitDisconnectedParam이 추가되었습니다.
API 변경
변경
-
PlanetKitDisconnectReasonenum 1-to-1 callGroup call이전 버전 PlanetKit 5.5 case serviceAPIKeyErrorcase serviceAccessTokenError -
PlanetKitCallDelegateprotocol 1-to-1 call이전 버전 PlanetKit 5.5 func callDidDisconnect(_ call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?)func didDisconnect(_ call: PlanetKitCall, disconnected: PlanetKitDisconnectedParam) -
PlanetKitConferenceDelegateprotocol Group call이전 버전 PlanetKit 5.5 func conferenceDidLeave(_ conference: PlanetKitConference, reason: PlanetKitDisconnectReason, userCode: String?)func didDisconnect(_ conference: PlanetKitConference, disconnected: PlanetKitDisconnectedParam)
추가
PlanetKitDisconnectSourceenum 1-to-1 callGroup callPlanetKitDisconnectedParamenum 1-to-1 callGroup callPlanetKitDisconnectReasonenum 1-to-1 callGroup callcase internalError = 1109case userError = 1110case internalKitError = 1111case micNoSource = 1112case unavailableNetwork = 1308case appDestroy = 1309case systemSleep = 1310case systemLogOff = 1311
삭제
PlanetKitDisconnectReasonenum 1-to-1 callGroup callcase micNoSrcByLocal = 1101case micNoSrcByRemote = 1102case internalErrorByLocal = 1103case internalErrorByRemote = 1104case userErrorByLocal = 1105case userErrorByRemote = 1106case internalKitErrorByLocal = 1107case internalKitErrorByRemote = 1108case unavailableNetworkInCall = 1307
PlanetKitCallclass 1-to-1 calllet disconnectByRemote: Bool
Breaking change 로그 수준 및 설정 변경
로그 수준을 재설계하고, 로그 크기를 지정할 수 있도록 수정했습니다.
기본적으로 로그 출력은 silent 로그 수준으로 비활성화됩니다.
배포용 빌드에서 최소한의 로그를 제공하고 싶다면, 로그 수준과 로그 크기를 설정해 주세요.
API 변경
변경
-
PlanetKitInitialSettingBuilderclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 func withEnableKitLogKey(level: PlanetKitLogLevel, module: PlanetKitLogModule) -> PlanetKitInitialSettingBuilderfunc withEnableKitLogKey(level: PlanetKitLogLevel, enable: Bool, logSize: PlanetKitLogSizeLimit) -> PlanetKitInitialSettingBuilder
추가
PlanetKitLogLevelenum 1-to-1 callGroup callcase detailed = 5case simple = 4case silent = 0
PlanetKitLogSizeLimitenum 1-to-1 callGroup callcase small = 0case medium = 1case large = 2case unlimited = 3
삭제
PlanetKitLogLevelenum 1-to-1 callGroup callcase info = 5case error = 2case critical = 1case none = 0
PlanetKitInitialSettingBuilderclass 1-to-1 callGroup callfunc 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 변경
변경
-
PlanetKitVideoBufferclass 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)
추가
PlanetKitMirroredTypeenum 1-to-1 callGroup callPlanetKitMTKViewclass 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType { get set }var rotation: PlanetKitVideoRotation { get set }
PlanetKitVideoBufferclass 1-to-1 callGroup callvar position: PlanetKitCameraPosition { get set }
삭제
PlanetKitVideoCaptureDeviceclass 1-to-1 callGroup callvar preferredMirrored: NSNumber? { get set }
PlanetKitCameraclass 1-to-1 callGroup callstatic func getVideoRotation(orientation:mirrored:)
PlanetKitVideoBufferclass 1-to-1 callGroup callvar 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 변경
변경
-
PlanetKitInboundDataSessionDelegateprotocol 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) -
PlanetKitOutboundDataSessionDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.4 func outboundDataSessionDidTooLongQueuedData(_ session: PlanetKitOutboundDataSession, enabled: Bool)func didTooLongQueuedData(_ session: PlanetKitOutboundDataSession, enabled: Bool)
추가
-
PlanetKitDataSessionClosedReasonenum 1-to-1 callGroup call -
PlanetKitInboundDataSessionDelegateprotocol 1-to-1 callGroup callfunc didClose(_ session: PlanetKitInboundDataSession, reason: PlanetKitDataSessionClosedReason)
-
PlanetKitOutboundDataSessionDelegateprotocol 1-to-1 callGroup callfunc didClose(_ session: PlanetKitOutboundDataSession, reason: PlanetKitDataSessionClosedReason)
삭제
PlanetKitDataSessionFailReasonenum 1-to-1 callGroup callcase 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 변경
변경
-
PlanetKitSendDataSessionclass →PlanetKitOutboundDataSessionclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 typealias Completion = (_ dataSession: PlanetKitSendDataSession?, _ success: Bool, _ description: String?)->Voidtypealias Completion = (_ dataSession: PlanetKitOutboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void -
PlanetKitRecvDataSessionclass →PlanetKitInboundDataSessionclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 typealias Completion = (_ dataSession: PlanetKitRecvDataSession?, _ success: Bool, _ description: String?)->Voidtypealias Completion = (_ dataSession: PlanetKitInboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void
추가
PlanetKitDataSessionFailReasonenum 1-to-1 callGroup callcase none = 0case internal = 1case unsupported = 2case notIncoming = 3case alreadyExist = 4case invalidId = 5case invalidType = 6
PlanetKitDataSessionControllableprotocol 1-to-1 callGroup callfunc getOutboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitOutboundDataSession?func getInboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitInboundDataSession?
삭제
PlanetKitSendDataSessionDelegateprotocol 1-to-1 callGroup callfunc sendDataSessionDidUnsupport(_ session: PlanetKitSendDataSession)
PlanetKitRecvDataSessionDelegateprotocol 1-to-1 callGroup callfunc recvDataSessionDidTooLongQueuedData(_ session: PlanetKitRecvDataSession, enabled: Bool)func recvDataSessionDidUnsupport(_ session: PlanetKitRecvDataSession)
Spec change 통화 일시 중지 기능 변경
통화 일시 중지 요청 시 기존에는 파라미터로 상대방의 비디오 및 오디오 수신을 일시 중지할지 설정했으나, 이제 항상 일시 중지하도록 변경되었습니다.
API 변경
변경
-
PlanetKitCallclass 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) -
PlanetKitConferencePeerclass Group call이전 버전 PlanetKit 5.5 PlanetKitConferencePeerInfo.holdvar holdStatus: PlanetKitHoldStatus -
PlanetKitHoldStatusclass Group call이전 버전 PlanetKit 5.5 PlanetKitHold.isHeldlet isOnHold: BoolPlanetKitHold.holdReasonlet holdReason: String?
삭제
PlanetKitConferencePeerHoldclass Group calllet peerPausedRecv: Bool
Spec change 통화 일시 중지 기능이 화면 공유 전송을 중지하도록 변경
화면 공유 중에 통화 일시 중지를 요청하면 화면 공유가 중단되고 콜백 이벤트가 발생합니다.
API 변경
추가
PlanetKitCallDelegateprotocol 1-to-1 callfunc myScreenShareDidStopByHold(_ conference: PlanetKitConference)
PlanetKitConferenceDelegateprotocol Group callfunc myScreenShareDidStopByHold(_ conference: PlanetKitConference)
삭제
PlanetKitCallclass 1-to-1 callvar hold: Bool { get }
PlanetKitConferenceclass Group callvar hold: Bool { get }func isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
PlanetKitSubgroupclass Group callfunc isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
Spec change 높은 우선순위 오디오 전송 제거
- 높은 우선순위 오디오 전송 기능은 더 이상 사용되지 않습니다.
API 변경
삭제
PlanetKitConferenceclass Group calllet isHighPriorityAudio: Boolfunc setHighPriorityAudioSend(_ isHighPriority: Bool, completion: @escaping (Bool)->Void)
Spec change PlanetKitCallState에 verified 상태 추가
- 통화 verified 이벤트와 통화 connected/disconnected 이벤트 간의 통화 상태가
waitAnswer상태에서verified상태로 변경되었습니다. - 또한
answered상태가 제거되었습니다.
API 변경
추가
PlanetKitCallStateenum 1-to-1 callcase verified
삭제
PlanetKitCallStateenum 1-to-1 callcase answered
Spec change 방 속성 제거
PlanetKit 5.2부터 방 속성 설정 없이 서브그룹을 생성할 수 있습니다.
API 변경
삭제
PlanetKitConferenceclass Group calllet roomType: PlanetKitConferenceRoomType
PlanetKitConferenceParamclass Group callvar roomType: PlanetKitConferenceRoomType { get set }
PlanetKitConferenceRoomTypeenum Group callPlanetKitDisconnectReasonenum - 1-on-1 call, Group callcase wrongRoomAttribute = 1403
Spec change 비디오 캡처 장치에 장치 회전 추가
회전된 카메라 이미지를 다른 참여자에게 보내기 위해 rotation을 사용할 수 있습니다.
API 변경
추가
PlanetKitVideoCaptureDeviceInfoclass 1-to-1 callGroup callvar rotation: PlanetKitVideoRotation { get set }
삭제
PlanetKitRenderingPolicyenum 1-to-1 callGroup callcase singlecase tripleBuffering
PlanetKitCameraclass 1-to-1 callGroup callstatic 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 변경
변경
-
PlanetKitConferenceclass 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 변경
추가
PlanetKitPeerControlDelegateprotocol Group callPlanetKitPeerControlclass Group callPlanetKitConferenceclass Group callfunc createPeerControl(peer: PlanetKitConferencePeer) -> PlanetKitPeerControl?
예제 코드
-
PlanetKitPeerControl속성과 필요한 뷰 속성을 가진 피어 뷰 또는 뷰 모델을 생성하세요.class YourPeerView {
var mtkView: PlanetKitMTKView?
var peerControl: PlanetKitPeerControl?
} -
PlanetKitPeerControlDelegate프로토콜을 채택하고 준수하도록 클래스를 확장하세요.extension YourPeerView: PlanetKitPeerControlDelegate {
// implement delegate functions as needed
} -
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
}
} -
PlanetKitPeerControl을 등록하세요.extension YourPeerView {
func registerPeerControl() {
peerControl?.register(delegate: self) { success in
NSLog("registerPeerControl result: \(success).")
}
}
} -
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))")
}
}
}
} -
PlanetKitPeerControl의 등록을 해제하세요.extension YourPeerView {
func unregisterPeerControl() {
peerControl?.unregister() { success in
}
}
}
Enhancement PlanetKitMyMediaStatus 추가
로컬 사용자의 미디어 상태를 가져오고 PlanetKitMyMediaStatusDelegate를 사용하여 로컬 사용자의 미디어 상태 변경을 관찰하기 위한 PlanetKitMyMediaStatus를 추가했습니다.
API 변경
추가
PlanetKitMyMediaStatusDelegateprotocol Group callPlanetKitMyMediaStatusclass Group callPlanetKitCallclass 1-to-1 callvar myMediaStatus: PlanetKitMyMediaStatus { get }
PlanetKitConferenceclass Group callvar myMediaStatus: PlanetKitMyMediaStatus { get }
삭제
PlanetKitConferenceclass Group callvar 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 변경
변경
-
PlanetKitManagerclass 1-to-1 call이전 버전 PlanetKit 5.5 func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, pushMessage: String, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
추가
PlanetKitCCParamclass 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 변경
변경
-
PlanetKitCallclass 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) -
PlanetKitConferenceclass 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)
추가
PlanetKitInitialMyVideoStateenum 1-to-1 callcase resumecase pause
PlanetKitCallParamclass 1-to-1 callvar initialMyVideoState: PlanetKitInitialMyVideoState { get set }
PlanetKitConferenceParamclass Group callvar initialMyVideoState: PlanetKitInitialMyVideoState { get set }
API 변경 목록
변경
-
PlanetKitConferencePeerclass Group call이전 버전 PlanetKit 5.5 PlanetKitConferencePeerInfo.isDataSessionSupportedlet isDataSessionSupported: BoolPlanetKitConferencePeerInfo.isMutedlet isMuted: BoolPlanetKitConferencePeerInfo.holdlet holdStatus: PlanetKitHoldStatusPlanetKitConferencePeerInfo.subgroupNameslet subgroupNames: [String]?PlanetKitConferencePeerInfo.activeVideoSubgroupNamelet currentVideoSubgroupName: String?PlanetKitConferencePeerInfo.activeScreenShareSubgroupNamelet currentScreenShareSubgroupName: String?PlanetKitConferencePeerInfo.userEquipmentTypelet userEquipmentType: PlanetKitUserEquipmentTypePlanetKitConferencePeerInfo.displayNamelet displayName: String?PlanetKitConferencePeerInfo.sipLocalIPlet sipLocalIP: String?PlanetKitConferencePeerInfo.sipDeviceInfolet sipDeviceInfo: String?PlanetKitConferencePeerState.videoStatusfunc videoStatus(subgroupName: String?) throws -> PlanetKitVideoStatusPlanetKitConferencePeerState.screenShareStatefunc screenShareStatus(subgroupName: String?) throws -> PlanetKitScreenShareStatusPlanetKitConferencePeerState.peerVolumefunc volumeLevelSetting(subgroupName: String?) throws -> PlanetKitVolumeLevelPlanetKitConferencePeerInfo.holdvar holdStatus: PlanetKitHoldStatus -
PlanetKitConferenceDelegateprotocol 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) -
PlanetKitConferenceSubgroupUpdatedPeerclass Group call이전 버전 PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeerlet subscribedGroupNames: [String]let subscribedSubgroupNames: [String]let unsubscribedGroupNames: [String]let unsubscribedSubgroupNames: [String] -
PlanetKitConferencePeerHoldclass Group call이전 버전 PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer -
PlanetKitConferencePeerVideoPauseclass Group call이전 버전 PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer -
PlanetKitConferenceSetSharedContentclass Group call이전 버전 PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfolet peer: PlanetKitConferencePeer -
PlanetKitManagerclass 1-to-1 call이전 버전 PlanetKit 5.5 func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, pushMessage: String, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResultfunc verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult -
PlanetKitHoldStatusclass Group call이전 버전 PlanetKit 5.5 PlanetKitHold.isHeldlet isOnHold: BoolPlanetKitHold.holdReasonlet holdReason: String? -
PlanetKitScreenclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 func setOverlay(windowLevel: CGWindowLevel, processIdentifier: Int32)func setOverlay(windowIDs: Set<CGWindowID>) -
PlanetKitAudioDeviceTypeenum 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioDirection.inputcase micPlanetKitAudioDirection.outputcase spk -
PlanetKitAudioDeviceChangeDelegateenum 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) -
PlanetKitAudioVolumeDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 func didChangeVolume(_ direction: PlanetKitAudioDirection, volume: Float)func didChangeVolume(_ type: PlanetKitAudioDeviceType, volume: Float) -
PlanetKitAudioMicControllableprotocol 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 -
PlanetKitAudioSpkControllableprotocol 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 -
PlanetKitAudioclass 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: Floatlet outputVolume: Floatlet spkVolume: Floatfunc 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 } -
PlanetKitSubgroupManagerclass 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) -
PlanetKitCallclass 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: PlanetKitAudioManagervar delegate: PlanetKitCallDelegate? { get set }weak var delegate: PlanetKitCallDelegate? { get } -
PlanetKitConferenceclass 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: PlanetKitAudioManagervar 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) -
PlanetKitMyAudioDescriptionDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)func myAudioDescriptionDidUpdate(_ description: PlanetKitMyAudioDescription) -
PlanetKitAudioDeviceVolumeDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)func volumeDidUpdate(_ deviceType: PlanetKitAudioDeviceType, volume: Float) -
PlanetKitPeerAudioDescriptionclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioSpkVolumeMeter.userId, PlanetKitAudioSpkVolumeMeter.serviceIdlet peerId: PlanetKitUserIdPlanetKitAudioSpkVolumeMeter.averageLevellet averageVolumeLevel: Int8PlanetKitConferenceDelegate.subgroupPeerAudioDidChange(_:peer:audioSubgroupName:oldName:)let sentSubgroupName: String?PlanetKitConferenceDelegate.subgroupPeerAudioDidChange(_:peer:audioTaggedSubgroupName:oldName:)let taggedSubgroupName: String? -
PlanetKitPeerAudioDescriptionDelegateprotocol 1-to-1 callGroup call이전 버전 PlanetKit 5.5 PlanetKitAudioSpkVolumeDelegate.didRefreshSpkVolumeMeter(_ :level:)func peerAudioDescriptionsDidUpdate(_ descriptions: [PlanetKitPeerAudioDescription], averageVolumeLevel: Int8) -
PlanetKitInitialSettingBuilderclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 func withEnableKitLogKey(level: PlanetKitLogLevel, module: PlanetKitLogModule) -> PlanetKitInitialSettingBuilderfunc withEnableKitLogKey(level: PlanetKitLogLevel, enable: Bool) -> PlanetKitInitialSettingBuilderfunc withSetKitLogPathKey(path: String) throws -> PlanetKitInitialSettingBuilderfunc withSetKitBasePathKey(path: String) throws -> PlanetKitInitialSettingBuilder -
PlanetKitMakeCallSettingBuilderclass 1-to-1 call이전 버전 PlanetKit 5.5 func withEnableScreenSharingKey((broadcastPort: UInt16, broadcastRxToken: String, broadcastTxToken: String) -> PlanetKitMakeCallSettingBuilderfunc withEnableScreenShareKey(broadcastPort : UInt16, broadcastPeerToken: String, broadcastMyToken: String) -> PlanetKitMakeCallSettingBuilder -
PlanetKitVerifyCallSettingBuilderclass 1-to-1 call이전 버전 PlanetKit 5.5 func withEnableScreenSharingKey(broadcastPort: UInt16, broadcastRxToken: String, broadcastTxToken: String) -> PlanetKitVerifyCallSettingBuilderfunc withEnableScreenShareKey(broadcastPort : UInt16, broadcastPeerToken: String, broadcastMyToken: String) -> PlanetKitVerifyCallSettingBuilder -
PlanetKitJoinConferenceSettingBuilderclass Group call이전 버전 PlanetKit 5.5 func withEnableScreenSharingKey(broadcastPort: UInt16, broadcastRxToken: String, broadcastTxToken: String) -> PlanetKitJoinConferenceSettingBuilderfunc withEnableScreenShareKey(broadcastPort: UInt16, broadcastPeerToken: String, broadcastMyToken: String) -> PlanetKitJoinConferenceSettingBuilder -
PlanetKitCallKitParamclass 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) -
PlanetKitCallDirectionenum 1-to-1 call이전 버전 PlanetKit 5.5 case incommingcase incoming -
PlanetKitCallDelegateprotocol 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) -
PlanetKitStartFailReasonenum 1-to-1 callGroup call이전 버전 PlanetKit 5.5 case kitInternalInitializaionError = 2999case kitInternalInitializationError = 2999 -
PlanetKitScreenShare.BroadcastErrorenum 1-to-1 callGroup call이전 버전 PlanetKit 5.5 case kitInternalInitializaionErrorcase kitInternalInitializationError -
PlanetKitAudioclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 var isBluethoothInput: Bool { get }var isBluetoothInput: Bool { get } -
PlanetKitScreenShare.BroadcastErrorenum 1-to-1 callGroup call이전 버전 PlanetKit 5.5 case unknowcase unknown -
PlanetKitConfenreceVideoUpdatedPeerclass →PlanetKitConferenceVideoUpdatedPeerclass Group call -
PlanetKitCallParamclass 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) -
PlanetKitConferenceParamclass Group call이전 버전 PlanetKit 5.5 var stid: String? { get set }var appServerData: String? { get set } -
PlanetKitSendDataSessionclass →PlanetKitOutboundDataSessionclass 1-to-1 callGroup callPrevious PlanetKit 5.5 typealias Completion = (_ dataSession: PlanetKitSendDataSession?, _ success: Bool, _ description: String?)->Voidtypealias Completion = (_ dataSession: PlanetKitOutboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void -
PlanetKitRecvDataSessionclass →PlanetKitInboundDataSessionclass 1-to-1 callGroup callPrevious PlanetKit 5.5 typealias Completion = (_ dataSession: PlanetKitRecvDataSession?, _ success: Bool, _ description: String?)->Voidtypealias Completion = (_ dataSession: PlanetKitInboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void -
PlanetKitDisconnectReasonenum 1-to-1 callGroup call이전 버전 PlanetKit 5.5 case serviceAPIKeyError = 1501case serviceAccessTokenError = 1501 -
PlanetKitVideoBufferclass 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) -
PlanetKitCameraFrameRateclass →PlanetKitFrameRateclass 1-to-1 callGroup call
추가
PlanetKitPeerControlDelegateprotocol Group callPlanetKitPeerControlclass Group callPlanetKitVolumeLevelclass Group callPlanetKitScreenShareStatusclass Group callPlanetKitVideoPauseReasonenum 1-to-1 callGroup callcase unknown
PlanetKitNSErrorCodeenum Group callPlanetKitCCParamclass 1-to-1 callPlanetKitManagerclass Group callvar conference: PlanetKitConference? { get }
PlanetKitScreenCaptureWindowclass 1-to-1 callGroup callvar bundleId: String? { get }var hasMultipleWindows: Bool
PlanetKitAudioSpkControllableprotocol 1-to-1 callGroup callfunc setMode(_ mode: AVAudioSession.Mode)
PlanetKitCallKitParamclass 1-to-1 calllet supportsHolding: Bool
PlanetKitStartFailReasonenum 1-to-1 callGroup callcase tooLongAppServerData = 11
PlanetKitAudioSessionSettingsclass 1-to-1 callGroup callPlanetKitAudioclass 1-to-1 callGroup callvar defaultIOBufDuration: Float64var defaultMicSampleRate: Float64var defaultSpkSampleRate: Float64var openSettings: PlanetKitAudioSessionSettings? { get set }var closeSettings: PlanetKitAudioSessionSettings? { get set }
PlanetKitDataSessionFailReasonenum 1-to-1 callGroup callcase none = 0case internal = 1case notIncoming = 3case alreadyExist = 4case invalidId = 5case invalidType = 6
PlanetKitDataSessionControllableprotocol 1-to-1 callGroup callfunc getOutboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitOutboundDataSession?func getInboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitInboundDataSession?
PlanetKitConferencePeerclass Group calllet sharedContents: PlanetKitSharedContents?
PlanetKitSharedContentsclass 1-to-1 callGroup calllet data: Datalet elapsedSeconds: TimeInterval
PlanetKitCallConnectedParamclass 1-to-1 callPlanetKitCallKitParamclass 1-to-1 calllet useResponderPreparation: Boollet startMessage: PlanetKitCallStartMessage?let recordOnCloud: Bool
PlanetKitCallStartMessageclass 1-to-1 callPlanetKitMyAudioDescriptionclass 1-to-1 callGroup calllet destinationSubgroupName: String?let taggedSubgroupName: String?
PlanetKitDisconnectSourceenum 1-to-1 callGroup callPlanetKitDisconnectedParamenum 1-to-1 callGroup callPlanetKitDisconnectReasonenum 1-to-1 callGroup callcase internalError = 1109case userError = 1110case internalKitError = 1111case micNoSource = 1112case maxCallTimeExceeded = 1208case unavailableNetwork = 1308case appDestroy = 1309case systemSleep = 1310case systemLogOff = 1311case mtuExceeded = 1312case appServerDataError = 1313case desktopScreenLocked = 1314case serviceTooManyRequests = 1512
PlanetKitScreenInterruptDelegateprotocol 1-to-1 callGroup callfunc scrDidInterruptBoundsChange(_ device: PlanetKitScreenCaptureDevice, window: PlanetKitScreenCaptureWindow)
PlanetKitCallStateenum 1-to-1 callcase verified
PlanetKitMTKViewclass 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType { get set }var rotation: PlanetKitVideoRotation { get set }
PlanetKitVideoCaptureDeviceInfoclass 1-to-1 callGroup callvar rotation: PlanetKitVideoRotation { get set }
PlanetKitVideoBufferclass 1-to-1 callGroup callvar position: PlanetKitCameraPosition { get set }
PlanetKitRecordOnCloudDeactivateReasonenum 1-to-1 callcase internal = 0case activationFailed = 1
PlanetKitRecordOnCloudUpdatedParamclass 1-to-1 calllet activated: Boollet deactivated: PlanetKitRecordOnCloudDeactivateReason
PlanetKitCallParamclass 1-to-1 callvar recordOnCloud: Bool { get set }var initialMyVideoState: PlanetKitInitialMyVideoState { get set }
PlanetKitConferenceParamclass Group callvar initialMyVideoState: PlanetKitInitialMyVideoState { get set }
PlanetKitCallDelegateprotocol 1-to-1 callfunc recordOnCloudDidUpdate(_ call: PlanetKitCall, updated: PlanetKitRecordOnCloudUpdatedParam)func myScreenShareDidStopByHold(_ conference: PlanetKitConference)
PlanetKitCallclass 1-to-1 callvar isPeerAudioMuted: Bool { get }var isRecordOnCloudActivated: Bool { get }func setMyScreenShareVideoShareMode(enable: Bool) -> Boolvar 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) -> Boolvar myVideoStream: PlanetKitVideoStream! { get }var myScreenShareStream: PlanetKitVideoStream! { get }
PlanetKitLogLevelenum 1-to-1 callGroup callcase detailed = 5case simple = 4case silent = 0
PlanetKitLogSizeLimitenum 1-to-1 callGroup callcase small = 0case medium = 1case large = 2case unlimited = 3
PlanetKitMyMediaStatusDelegateprotocol Group callPlanetKitMyMediaStatusclass Group callPlanetKitConferenceDelegateprotocol Group callfunc myScreenShareDidStopByHold(_ conference: PlanetKitConference)
PlanetKitConferenceclass Group callfunc createPeerControl(peer: PlanetKitConferencePeer) -> PlanetKitPeerControl?var myMediaStatus: PlanetKitMyMediaStatus { get }func setMyScreenShareVideoShareMode(enable: Bool) -> Boolvar isMyScreenShareVideoShareModeEnabled: Bool { get }var myVideoStream: PlanetKitVideoStream! { get }var myScreenShareStream: PlanetKitVideoStream! { get }
PlanetKitConferenceConnectedParamclass Group calllet isVideoHwCodecEnabled: Boollet isVideoShareModeSupported: Bool
PlanetKitVirtualBackgroundTypeenum 1-to-1 callGroup callPlanetKitVirtualBackgroundclass 1-to-1 callGroup callPlanetKitAudioDeviceclass 1-to-1 callGroup callvar isCapturable: Bool { get }var isPlayable: Bool { get }
PlanetKitMakeCallSettingBuilderclass 1-to-1 callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitMakeCallSettingBuilderfunc withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitMakeCallSettingBuilderfunc withPlayEndToneRegardlessOfCallStateKey(enable: Bool) throws -> PlanetKitMakeCallSettingBuilder
PlanetKitVerifyCallSettingBuilderclass 1-to-1 callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitVerifyCallSettingBuilderfunc withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitVerifyCallSettingBuilderfunc withPlayEndToneRegardlessOfCallStateKey(enable: Bool) throws -> PlanetKitVerifyCallSettingBuilder
PlanetKitJoinConferenceSettingBuilderclass Group callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitJoinConferenceSettingBuilderfunc withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitJoinConferenceSettingBuilderfunc withPlayEndToneRegardlessOfConferenceStateKey(enable: Bool) throws -> PlanetKitJoinConferenceSettingBuilder
PlanetKitInitialMyVideoStateenum 1-to-1 callcase resumecase pause
PlanetKitHookedAudioclass 1-to-1 callvar sampleRate: UInt32 { get }var channel: UInt32 { get }var sampleType: PlanetKitAudioSampleType { get }var sampleCount: UInt32 { get }var seq: Int64 { get }var data: Data { get set }
PlanetKitCallHookedAudioDelegateprotocol 1-to-1 callfunc didHook(_ call: PlanetKitCall, audio: PlanetKitHookedAudio)
PlanetKitVideoStreamclass 1-to-1 callGroup callinit()
PlanetKitVideoStreamDelegateprotocol 1-to-1 callGroup callPlanetKitScreenControllableprotocol 1-to-1 callGroup callweak var delegate: PlanetKitVideoOutputDelegate? { get set }
PlanetKitFpsLimitUpdateDelegateprotocol 1-to-1 callGroup call
삭제
PlanetKitConferencePeerInfoclass Group callPlanetKitConferencePeerStateclass Group callPlanetKitSubgroupclass Group callvar peerInfos: [PlanetKitConferencePeerInfo] { get }
PlanetKitLogStorageclass 1-to-1 callGroup callPlanetKitLogStorageTypeenum 1-to-1 callGroup callPlanetKitManagerclass 1-to-1 callGroup callfunc makeLogStorage(type: PlanetKitLogStorageType, maxSize: Int) throws -> PlanetKitLogStorage
PlanetKitInitialSettingBuilderclass 1-to-1 callGroup callfunc withEnableKitDebugKey(debugSetting: Dictionary<String, String>) -> PlanetKitInitialSettingBuilder
PlanetKitConferencePeerHoldclass Group calllet peerPausedRecv: Bool
PlanetKitConferenceDelegateprotocol Group callfunc 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?)
PlanetKitSubgroupManagerclass Group callvar myVideoTaggedSubgroupName: String? { get }func tagMainRoomVideoSend(taggedSubgroupName: String?, completion: @escaping (Bool) -> Void)
PlanetKitCallclass 1-to-1 calllet micVolumeLevel: Int8let spkVolumeLevel: Int8var mic: PlanetKitAudioMicControllablevar spk: PlanetKitAudioSpkControllablelet disconnectByRemote: Boolfunc setMyViewDelegate(_ videoOutDelegate: PlanetKitVideoOutputDelegate)func resetMyViewDelegate()func setPeerViewDelegate(_ videoOutDelegate: PlanetKitVideoOutputDelegate)func resetPeerViewDelegate()let myScreenShareSendCapability: PlanetKitVideoCapabilityvar isMyVideoInterrupted: Boolfunc declineCall()var isMyVideoInterrupted: Boolvar hold: Bool { get }
PlanetKitConferenceclass Group calllet micVolumeLevel: Int8let spkVolumeLevel: Int8var mic: PlanetKitAudioMicControllablevar spk: PlanetKitAudioSpkControllablelet isHighPriorityAudio: Boolfunc setHighPriorityAudioSend(_ isHighPriority: Bool, completion: @escaping (Bool)->Void)let roomType: PlanetKitConferenceRoomTypevar myVideoStatus: PlanetKitVideoStatus { get }var isMyAudioMuted: Bool { get }let myScreenShareSendCapability: PlanetKitVideoCapabilityvar isMyVideoInterrupted: Boolfunc getActiveVideoPeer(peerId: PlanetKitUserId) -> PlanetKitConferencePeer?func getActiveScreenSharePeer(peerId: PlanetKitUserId) -> PlanetKitConferencePeer?var isMyVideoInterrupted: Boolvar hold: Bool { get }func isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
PlanetKitAudioclass 1-to-1 callGroup callfunc change(mic: PlanetKitAudioMicControllable?)func change(spk: PlanetKitAudioSpkControllable?)func setAudioSessionHandler(_ handler: PlanetKitAudioSessionHandler?)func setDefaultSampleRate(mic: Float64)func setDefaultSampleRate(spk: Float64)
PlanetKitConferenceDelegateprotocol Group callpeersVideoDidPause(_ conference: PlanetKitConference, videoPauses: [PlanetKitConferencePeerVideoPause])peersVideoDidResume(_ conference: PlanetKitConference, peers: [PlanetKitConferencePeer])
PlanetKitSendDataSessionDelegateprotocol 1-to-1 callGroup callfunc sendDataSessionDidUnsupport(_ session: PlanetKitSendDataSession)
PlanetKitRecvDataSessionDelegateprotocol 1-to-1 callGroup callfunc recvDataSessionDidTooLongQueuedData(_ session: PlanetKitRecvDataSession, enabled: Bool)func recvDataSessionDidUnsupport(_ session: PlanetKitRecvDataSession)
PlanetKitDisconnectReasonenum 1-to-1 callGroup callcase micNoSrcByLocal = 1101case micNoSrcByRemote = 1102case internalErrorByLocal = 1103case internalErrorByRemote = 1104case userErrorByLocal = 1105case userErrorByRemote = 1106case internalKitErrorByLocal = 1107case internalKitErrorByRemote = 1108case unavailableNetworkInCall = 1307case wrongRoomAttribute = 1403
PlanetKitCallStateenum 1-to-1 callcase answered
PlanetKitConferenceParamclass Group callvar roomType: PlanetKitConferenceRoomType { get set }
PlanetKitConferenceRoomTypeenum Group callPlanetKitVideoCaptureDeviceclass 1-to-1 callGroup callvar preferredMirrored: NSNumber? { get set }
PlanetKitCameraclass 1-to-1 callGroup callstatic func getVideoRotation(orientation:mirrored:)
PlanetKitVideoBufferclass 1-to-1 callGroup callvar mirrored : Bool { get set }
PlanetKitLogLevelenum 1-to-1 callGroup callcase info = 5case error = 2case critical = 1case none = 0
PlanetKitAudioSessionHandlerprotocol 1-to-1 callGroup callPlanetKitAudioSessionContextclass 1-to-1 callGroup callPlanetKitVideoCapabilityclass 1-to-1 callGroup callstatic var callScreenShareSendDefault: PlanetKitVideoCapabilitystatic var conferenceScreenShareSendDefault: PlanetKitVideoCapability
PlanetKitMakeCallSettingBuilderclass 1-to-1 callfunc withMyScreenShareSendCapabilityKey(capability: PlanetKitVideoCapability) -> PlanetKitMakeCallSettingBuilder
PlanetKitVerifyCallSettingBuilderclass 1-to-1 callfunc withMyScreenShareSendCapabilityKey(capability: PlanetKitVideoCapability) -> PlanetKitVerifyCallSettingBuilder
PlanetKitJoinConferenceSettingBuilderclass Group callfunc withMyScreenShareSendCapabilityKey(capability: PlanetKitVideoCapability) -> PlanetKitJoinConferenceSettingBuilderfunc withDisconnectBadNetwork(enable: Bool) -> PlanetKitJoinConferenceSettingBuilder
PlanetKitMediaDisableReasonenum 1-to-1 callGroup callcase noMediaSrccase noRecvMedia
PlanetKitSubgroupclass Group callfunc isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
PlanetKitScreenControllableprotocol 1-to-1 callGroup callfunc addReceiver(_ videoOutDelegate: PlanetKitVideoOutputDelegate)func removeReceiver(_ videoOutDelegate: PlanetKitVideoOutputDelegate)func setModifier(_ videoModifier: PlanetKitVideoModifierDelegate?)