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
toPlanetKitVideoCaptureDeviceInfo
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.isStarted
var isStarted: Bool { get }
PlanetKitCamera.currentDevice
var currentDeviceInfo: PlanetKitVideoCaptureDeviceInfo? { get }
PlanetKitCamera.cameraPreset
var preset: PlanetKitCameraPreset? { get }
PlanetKitCamera.cameraPosition
var position: PlanetKitCameraPosition { get }
PlanetKitCamera.cameraFrameRate
var 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.isCameraAvailable
static var isCameraAvailable: Bool { get }
PlanetKitCamera.devices
var deviceInfos: [PlanetKitVideoCaptureDeviceInfo] { get }
PlanetKitCamera.addDeviceChangeDelegate(_:)
func addDeviceChangeDelegate(_ delegate: PlanetKitCameraDeviceChangeDelegate)
PlanetKitCamera.removeDeviceChangeDelegate(_:)
func removeDeviceChangeDelegate(_ delegate: PlanetKitCameraDeviceChangeDelegate)
PlanetKitCamera.didStartNotification
var delegate: PlanetKitCameraDelegate? { get set }
PlanetKitCamera.didStopNotification
var delegate: PlanetKitCameraDelegate? { get set }
추가
PlanetKitCall
class 1-to-1 callvar myVideoStream: PlanetKitVideoStream! { get }
var myScreenShareStream: PlanetKitVideoStream! { get }
PlanetKitConference
class Group callvar myVideoStream: PlanetKitVideoStream! { get }
var myScreenShareStream: PlanetKitVideoStream! { get }
PlanetKitCameraManager
class 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)
PlanetKitCameraDelegate
protocol 1-to-1 callGroup callfunc didStart()
func didStop(_ error: NSError?)
PlanetKitCustomCamera
class 1-to-1 callGroup callfunc sendVideo(videoBuffer: PlanetKitVideoBuffer)
func isVideoSendAvailable() -> Bool
PlanetKitCall
class 1-to-1 callvar peerVideoStream: PlanetKitVideoStream
삭제
PlanetKitCamera
class 1-to-1 callGroup callPlanetKitCameraControllable
protocol 1-to-1 callGroup callPlanetKitCall
class 1-to-1 callvar camera: PlanetKitCameraControllable? { get }
func startPreview()
func stopPreview()
PlanetKitConference
class Group callvar camera: PlanetKitCameraControllable? { get }
func startPreview()
func stopPreview()
PlanetKitInitialSettingBuilder
class 1-to-1 callGroup callfunc withDisableKitCameraKey(disable: Bool) -> PlanetKitInitialSettingBuilder
PlanetKitMakeCallSettingBuilder
class 1-to-1 callfunc withCustomCameraKey(camera: PlanetKitCameraControllable) -> PlanetKitMakeCallSettingBuilder
func withCustomCameraStreamKey(videoStream: PlanetKitVideoStream) -> PlanetKitMakeCallSettingBuilder
PlanetKitVerifyCallSettingBuilder
class 1-to-1 callfunc withCustomCameraKey(camera: PlanetKitCameraControllable) -> PlanetKitVerifyCallSettingBuilder
func withCustomCameraStreamKey(videoStream: PlanetKitVideoStream) -> PlanetKitVerifyCallSettingBuilder
PlanetKitJoinConferenceSettingBuilder
class Group callfunc 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 callcase 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: Float
let micVolume: Float
let outputVolume: Float
let 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.serviceId
let peerId: PlanetKitUserId
PlanetKitAudioSpkVolumeMeter.averageLevel
let 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 callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitMakeCallSettingBuilder
func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitMakeCallSettingBuilder
PlanetKitVerifyCallSettingBuilder
class 1-to-1 callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitVerifyCallSettingBuilder
func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitVerifyCallSettingBuilder
PlanetKitJoinConferenceSettingBuilder
class Group callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitJoinConferenceSettingBuilder
func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitJoinConferenceSettingBuilder
삭제
PlanetKitConferenceDelegate
protocol 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?)
PlanetKitCall
class 1-to-1 calllet micVolumeLevel: Int8
let spkVolumeLevel: Int8
PlanetKitConference
class Group calllet 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 callvar mic: PlanetKitAudioMicControllable
var spk: PlanetKitAudioSpkControllable
-
PlanetKitConference
class Group callvar mic: PlanetKitAudioMicControllable
var spk: PlanetKitAudioSpkControllable
Breaking change PlanetKitAudioSessionHandler
제거
PlanetKitAudioSessionHandler
가 제거되었고 오디오 열기 및 닫기 설정을 위한 PlanetKitAudioSessionSettings
가 PlanetKitAudio
에 추가되었습니다.
API 변경
추가
PlanetKitAudioSessionSettings
class 1-to-1 callGroup callPlanetKitAudio
class 1-to-1 callGroup callvar openSettings: PlanetKitAudioSessionSettings? { get set }
var closeSettings: PlanetKitAudioSessionSettings? { get set }
삭제
PlanetKitAudioSessionHandler
protocol 1-to-1 callGroup callPlanetKitAudioSessionContext
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 callvar defaultIOBufDuration: Float64
var defaultMicSampleRate: Float64
var defaultSpkSampleRate: Float64
삭제
PlanetKitAudio
class 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 변경
변경
-
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 callPlanetKitCallKitParam
class 1-to-1 calllet 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 serviceAPIKeyError
case 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 callPlanetKitDisconnectedParam
enum 1-to-1 callGroup callPlanetKitDisconnectReason
enum 1-to-1 callGroup callcase 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 callcase 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 calllet disconnectByRemote: Bool
Breaking change 로그 수준 및 설정 변경
로그 수준을 재설계하고, 로그 크기를 지정할 수 있도록 수정했습니다.
기본적으로 로그 출력은 silent
로그 수준으로 비활성화됩니다.
배포용 빌드에서 최소한의 로그를 제공하고 싶다면, 로그 수준과 로그 크기를 설정해 주세요.
API 변경
변경
-
PlanetKitInitialSettingBuilder
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 func withEnableKitLogKey(level: PlanetKitLogLevel, module: PlanetKitLogModule) -> PlanetKitInitialSettingBuilder
func withEnableKitLogKey(level: PlanetKitLogLevel, enable: Bool, logSize: PlanetKitLogSizeLimit) -> PlanetKitInitialSettingBuilder
추가
PlanetKitLogLevel
enum 1-to-1 callGroup callcase detailed = 5
case simple = 4
case silent = 0
PlanetKitLogSizeLimit
enum 1-to-1 callGroup callcase small = 0
case medium = 1
case large = 2
case unlimited = 3
삭제
PlanetKitLogLevel
enum 1-to-1 callGroup callcase info = 5
case error = 2
case critical = 1
case none = 0
PlanetKitInitialSettingBuilder
class 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 변경
변경
-
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 callPlanetKitMTKView
class 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType { get set }
var rotation: PlanetKitVideoRotation { get set }
PlanetKitVideoBuffer
class 1-to-1 callGroup callvar position: PlanetKitCameraPosition { get set }
삭제
PlanetKitVideoCaptureDevice
class 1-to-1 callGroup callvar preferredMirrored: NSNumber? { get set }
PlanetKitCamera
class 1-to-1 callGroup callstatic func getVideoRotation(orientation:mirrored:)
PlanetKitVideoBuffer
class 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 변경
변경
-
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 callfunc didClose(_ session: PlanetKitInboundDataSession, reason: PlanetKitDataSessionClosedReason)
-
PlanetKitOutboundDataSessionDelegate
protocol 1-to-1 callGroup callfunc didClose(_ session: PlanetKitOutboundDataSession, reason: PlanetKitDataSessionClosedReason)
삭제
PlanetKitDataSessionFailReason
enum 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 변경
변경
-
PlanetKitSendDataSession
class →PlanetKitOutboundDataSession
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 typealias Completion = (_ dataSession: PlanetKitSendDataSession?, _ success: Bool, _ description: String?)->Void
typealias 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?)->Void
typealias Completion = (_ dataSession: PlanetKitInboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void
추가
PlanetKitDataSessionFailReason
enum 1-to-1 callGroup callcase 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 callfunc getOutboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitOutboundDataSession?
func getInboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitInboundDataSession?
삭제
PlanetKitSendDataSessionDelegate
protocol 1-to-1 callGroup callfunc sendDataSessionDidUnsupport(_ session: PlanetKitSendDataSession)
PlanetKitRecvDataSessionDelegate
protocol 1-to-1 callGroup callfunc 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.hold
var holdStatus: PlanetKitHoldStatus
-
PlanetKitHoldStatus
class Group call이전 버전 PlanetKit 5.5 PlanetKitHold.isHeld
let isOnHold: Bool
PlanetKitHold.holdReason
let holdReason: String?
삭제
PlanetKitConferencePeerHold
class Group calllet peerPausedRecv: Bool
Spec change 통화 일시 중지 기능이 화면 공유 전송을 중지하도록 변경
화면 공유 중에 통화 일시 중지를 요청하면 화면 공유가 중단되고 콜백 이벤트가 발생합니다.
API 변경
추가
PlanetKitCallDelegate
protocol 1-to-1 callfunc myScreenShareDidStopByHold(_ conference: PlanetKitConference)
PlanetKitConferenceDelegate
protocol Group callfunc myScreenShareDidStopByHold(_ conference: PlanetKitConference)
삭제
PlanetKitCall
class 1-to-1 callvar hold: Bool { get }
PlanetKitConference
class Group callvar hold: Bool { get }
func isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
PlanetKitSubgroup
class Group callfunc isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
Spec change 높은 우선순위 오디오 전송 제거
- 높은 우선순위 오디오 전송 기능은 더 이상 사용되지 않습니다.
API 변경
삭제
PlanetKitConference
class Group calllet 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 callcase verified
삭제
PlanetKitCallState
enum 1-to-1 callcase answered
Spec change 방 속성 제거
PlanetKit 5.2부터 방 속성 설정 없이 서브그룹을 생성할 수 있습니다.
API 변경
삭제
PlanetKitConference
class Group calllet roomType: PlanetKitConferenceRoomType
PlanetKitConferenceParam
class Group callvar roomType: PlanetKitConferenceRoomType { get set }
PlanetKitConferenceRoomType
enum Group callPlanetKitDisconnectReason
enum - 1-on-1 call, Group callcase wrongRoomAttribute = 1403
Spec change 비디오 캡처 장치에 장치 회전 추가
회전된 카메라 이미지를 다른 참여자에게 보내기 위해 rotation
을 사용할 수 있습니다.
API 변경
추가
PlanetKitVideoCaptureDeviceInfo
class 1-to-1 callGroup callvar rotation: PlanetKitVideoRotation { get set }
삭제
PlanetKitRenderingPolicy
enum 1-to-1 callGroup callcase single
case tripleBuffering
PlanetKitCamera
class 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 변경
변경
-
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 callPlanetKitPeerControl
class Group callPlanetKitConference
class 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 변경
추가
PlanetKitMyMediaStatusDelegate
protocol Group callPlanetKitMyMediaStatus
class Group callPlanetKitCall
class 1-to-1 callvar myMediaStatus: PlanetKitMyMediaStatus { get }
PlanetKitConference
class Group callvar myMediaStatus: PlanetKitMyMediaStatus { get }
삭제
PlanetKitConference
class 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 변경
변경
-
PlanetKitManager
class 1-to-1 call이전 버전 PlanetKit 5.5 func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
func verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
func 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 callcase resume
case pause
PlanetKitCallParam
class 1-to-1 callvar initialMyVideoState: PlanetKitInitialMyVideoState { get set }
PlanetKitConferenceParam
class Group callvar initialMyVideoState: PlanetKitInitialMyVideoState { get set }
API 변경 목록
변경
-
PlanetKitConferencePeer
class Group call이전 버전 PlanetKit 5.5 PlanetKitConferencePeerInfo.isDataSessionSupported
let isDataSessionSupported: Bool
PlanetKitConferencePeerInfo.isMuted
let isMuted: Bool
PlanetKitConferencePeerInfo.hold
let holdStatus: PlanetKitHoldStatus
PlanetKitConferencePeerInfo.subgroupNames
let subgroupNames: [String]?
PlanetKitConferencePeerInfo.activeVideoSubgroupName
let currentVideoSubgroupName: String?
PlanetKitConferencePeerInfo.activeScreenShareSubgroupName
let currentScreenShareSubgroupName: String?
PlanetKitConferencePeerInfo.userEquipmentType
let userEquipmentType: PlanetKitUserEquipmentType
PlanetKitConferencePeerInfo.displayName
let displayName: String?
PlanetKitConferencePeerInfo.sipLocalIP
let sipLocalIP: String?
PlanetKitConferencePeerInfo.sipDeviceInfo
let sipDeviceInfo: String?
PlanetKitConferencePeerState.videoStatus
func videoStatus(subgroupName: String?) throws -> PlanetKitVideoStatus
PlanetKitConferencePeerState.screenShareState
func screenShareStatus(subgroupName: String?) throws -> PlanetKitScreenShareStatus
PlanetKitConferencePeerState.peerVolume
func volumeLevelSetting(subgroupName: String?) throws -> PlanetKitVolumeLevel
PlanetKitConferencePeerInfo.hold
var 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: PlanetKitConferencePeerInfo
let peer: PlanetKitConferencePeer
let subscribedGroupNames: [String]
let subscribedSubgroupNames: [String]
let unsubscribedGroupNames: [String]
let unsubscribedSubgroupNames: [String]
-
PlanetKitConferencePeerHold
class Group call이전 버전 PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfo
let peer: PlanetKitConferencePeer
-
PlanetKitConferencePeerVideoPause
class Group call이전 버전 PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfo
let peer: PlanetKitConferencePeer
-
PlanetKitConferenceSetSharedContent
class Group call이전 버전 PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfo
let peer: PlanetKitConferencePeer
-
PlanetKitManager
class 1-to-1 call이전 버전 PlanetKit 5.5 func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
func verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
func verifyCall(myUserId: PlanetKitUserId, pushMessage: String, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
func verifyCall(myUserId: PlanetKitUserId, ccParam: PlanetKitCCParam, settings: [String: Any]?, delegate: PlanetKitCallDelegate?) -> PlanetKitCallVerifyResult
-
PlanetKitHoldStatus
class Group call이전 버전 PlanetKit 5.5 PlanetKitHold.isHeld
let isOnHold: Bool
PlanetKitHold.holdReason
let 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.input
case mic
PlanetKitAudioDirection.output
case 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: Float
let micVolume: Float
let outputVolume: Float
let 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.serviceId
let peerId: PlanetKitUserId
PlanetKitAudioSpkVolumeMeter.averageLevel
let 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) -> PlanetKitInitialSettingBuilder
func withEnableKitLogKey(level: PlanetKitLogLevel, enable: Bool) -> PlanetKitInitialSettingBuilder
func withSetKitLogPathKey(path: String) throws -> PlanetKitInitialSettingBuilder
func withSetKitBasePathKey(path: String) throws -> PlanetKitInitialSettingBuilder
-
PlanetKitMakeCallSettingBuilder
class 1-to-1 call이전 버전 PlanetKit 5.5 func withEnableScreenSharingKey((broadcastPort: UInt16, broadcastRxToken: String, broadcastTxToken: String) -> PlanetKitMakeCallSettingBuilder
func 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) -> PlanetKitVerifyCallSettingBuilder
func withEnableScreenShareKey(broadcastPort : UInt16, broadcastPeerToken: String, broadcastMyToken: String) -> PlanetKitVerifyCallSettingBuilder
-
PlanetKitJoinConferenceSettingBuilder
class Group call이전 버전 PlanetKit 5.5 func withEnableScreenSharingKey(broadcastPort: UInt16, broadcastRxToken: String, broadcastTxToken: String) -> PlanetKitJoinConferenceSettingBuilder
func 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 incomming
case 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 = 2999
case kitInternalInitializationError = 2999
-
PlanetKitScreenShare.BroadcastError
enum 1-to-1 callGroup call이전 버전 PlanetKit 5.5 case kitInternalInitializaionError
case 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 unknow
case 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 callPrevious PlanetKit 5.5 typealias Completion = (_ dataSession: PlanetKitSendDataSession?, _ success: Bool, _ description: String?)->Void
typealias Completion = (_ dataSession: PlanetKitOutboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void
-
PlanetKitRecvDataSession
class →PlanetKitInboundDataSession
class 1-to-1 callGroup callPrevious PlanetKit 5.5 typealias Completion = (_ dataSession: PlanetKitRecvDataSession?, _ success: Bool, _ description: String?)->Void
typealias Completion = (_ dataSession: PlanetKitInboundDataSession?, _ failReason: PlanetKitDataSessionFailReason)->Void
-
PlanetKitDisconnectReason
enum 1-to-1 callGroup call이전 버전 PlanetKit 5.5 case serviceAPIKeyError = 1501
case 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 callPlanetKitPeerControl
class Group callPlanetKitVolumeLevel
class Group callPlanetKitScreenShareStatus
class Group callPlanetKitVideoPauseReason
enum 1-to-1 callGroup callcase unknown
PlanetKitNSErrorCode
enum Group callPlanetKitCCParam
class 1-to-1 callPlanetKitManager
class Group callvar conference: PlanetKitConference? { get }
PlanetKitScreenCaptureWindow
class 1-to-1 callGroup callvar bundleId: String? { get }
var hasMultipleWindows: Bool
PlanetKitAudioSpkControllable
protocol 1-to-1 callGroup callfunc setMode(_ mode: AVAudioSession.Mode)
PlanetKitCallKitParam
class 1-to-1 calllet supportsHolding: Bool
PlanetKitStartFailReason
enum 1-to-1 callGroup callcase tooLongAppServerData = 11
PlanetKitAudioSessionSettings
class 1-to-1 callGroup callPlanetKitAudio
class 1-to-1 callGroup callvar defaultIOBufDuration: Float64
var defaultMicSampleRate: Float64
var defaultSpkSampleRate: Float64
var openSettings: PlanetKitAudioSessionSettings? { get set }
var closeSettings: PlanetKitAudioSessionSettings? { get set }
PlanetKitDataSessionFailReason
enum 1-to-1 callGroup callcase none = 0
case internal = 1
case notIncoming = 3
case alreadyExist = 4
case invalidId = 5
case invalidType = 6
PlanetKitDataSessionControllable
protocol 1-to-1 callGroup callfunc getOutboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitOutboundDataSession?
func getInboundDataSession(streamId: PlanetKitDataSessionStreamId) -> PlanetKitInboundDataSession?
PlanetKitConferencePeer
class Group calllet sharedContents: PlanetKitSharedContents?
PlanetKitSharedContents
class 1-to-1 callGroup calllet data: Data
let elapsedSeconds: TimeInterval
PlanetKitCallConnectedParam
class 1-to-1 callPlanetKitCallKitParam
class 1-to-1 calllet useResponderPreparation: Bool
let startMessage: PlanetKitCallStartMessage?
let recordOnCloud: Bool
PlanetKitCallStartMessage
class 1-to-1 callPlanetKitMyAudioDescription
class 1-to-1 callGroup calllet destinationSubgroupName: String?
let taggedSubgroupName: String?
PlanetKitDisconnectSource
enum 1-to-1 callGroup callPlanetKitDisconnectedParam
enum 1-to-1 callGroup callPlanetKitDisconnectReason
enum 1-to-1 callGroup callcase 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 callfunc scrDidInterruptBoundsChange(_ device: PlanetKitScreenCaptureDevice, window: PlanetKitScreenCaptureWindow)
PlanetKitCallState
enum 1-to-1 callcase verified
PlanetKitMTKView
class 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType { get set }
var rotation: PlanetKitVideoRotation { get set }
PlanetKitVideoCaptureDeviceInfo
class 1-to-1 callGroup callvar rotation: PlanetKitVideoRotation { get set }
PlanetKitVideoBuffer
class 1-to-1 callGroup callvar position: PlanetKitCameraPosition { get set }
PlanetKitRecordOnCloudDeactivateReason
enum 1-to-1 callcase internal = 0
case activationFailed = 1
PlanetKitRecordOnCloudUpdatedParam
class 1-to-1 calllet activated: Bool
let deactivated: PlanetKitRecordOnCloudDeactivateReason
PlanetKitCallParam
class 1-to-1 callvar recordOnCloud: Bool { get set }
var initialMyVideoState: PlanetKitInitialMyVideoState { get set }
PlanetKitConferenceParam
class Group callvar initialMyVideoState: PlanetKitInitialMyVideoState { get set }
PlanetKitCallDelegate
protocol 1-to-1 callfunc recordOnCloudDidUpdate(_ call: PlanetKitCall, updated: PlanetKitRecordOnCloudUpdatedParam)
func myScreenShareDidStopByHold(_ conference: PlanetKitConference)
PlanetKitCall
class 1-to-1 callvar 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 callcase detailed = 5
case simple = 4
case silent = 0
PlanetKitLogSizeLimit
enum 1-to-1 callGroup callcase small = 0
case medium = 1
case large = 2
case unlimited = 3
PlanetKitMyMediaStatusDelegate
protocol Group callPlanetKitMyMediaStatus
class Group callPlanetKitConferenceDelegate
protocol Group callfunc myScreenShareDidStopByHold(_ conference: PlanetKitConference)
PlanetKitConference
class Group callfunc 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 calllet isVideoHwCodecEnabled: Bool
let isVideoShareModeSupported: Bool
PlanetKitVirtualBackgroundType
enum 1-to-1 callGroup callPlanetKitVirtualBackground
class 1-to-1 callGroup callPlanetKitAudioDevice
class 1-to-1 callGroup callvar isCapturable: Bool { get }
var isPlayable: Bool { get }
PlanetKitMakeCallSettingBuilder
class 1-to-1 callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitMakeCallSettingBuilder
func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitMakeCallSettingBuilder
func withPlayEndToneRegardlessOfCallStateKey(enable: Bool) throws -> PlanetKitMakeCallSettingBuilder
PlanetKitVerifyCallSettingBuilder
class 1-to-1 callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitVerifyCallSettingBuilder
func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitVerifyCallSettingBuilder
func withPlayEndToneRegardlessOfCallStateKey(enable: Bool) throws -> PlanetKitVerifyCallSettingBuilder
PlanetKitJoinConferenceSettingBuilder
class Group callfunc withEnableAudioDescriptionKey(enable: Bool) -> PlanetKitJoinConferenceSettingBuilder
func withAudioDescriptionUpdateIntervalKey(interval: TimeInterval) -> PlanetKitJoinConferenceSettingBuilder
func withPlayEndToneRegardlessOfConferenceStateKey(enable: Bool) throws -> PlanetKitJoinConferenceSettingBuilder
PlanetKitInitialMyVideoState
enum 1-to-1 callcase resume
case pause
PlanetKitHookedAudio
class 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 }
PlanetKitCallHookedAudioDelegate
protocol 1-to-1 callfunc didHook(_ call: PlanetKitCall, audio: PlanetKitHookedAudio)
PlanetKitVideoStream
class 1-to-1 callGroup callinit()
PlanetKitVideoStreamDelegate
protocol 1-to-1 callGroup callPlanetKitScreenControllable
protocol 1-to-1 callGroup callweak var delegate: PlanetKitVideoOutputDelegate? { get set }
PlanetKitFpsLimitUpdateDelegate
protocol 1-to-1 callGroup call
삭제
PlanetKitConferencePeerInfo
class Group callPlanetKitConferencePeerState
class Group callPlanetKitSubgroup
class Group callvar peerInfos: [PlanetKitConferencePeerInfo] { get }
PlanetKitLogStorage
class 1-to-1 callGroup callPlanetKitLogStorageType
enum 1-to-1 callGroup callPlanetKitManager
class 1-to-1 callGroup callfunc makeLogStorage(type: PlanetKitLogStorageType, maxSize: Int) throws -> PlanetKitLogStorage
PlanetKitInitialSettingBuilder
class 1-to-1 callGroup callfunc withEnableKitDebugKey(debugSetting: Dictionary<String, String>) -> PlanetKitInitialSettingBuilder
PlanetKitConferencePeerHold
class Group calllet peerPausedRecv: Bool
PlanetKitConferenceDelegate
protocol 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?)
PlanetKitSubgroupManager
class Group callvar myVideoTaggedSubgroupName: String? { get }
func tagMainRoomVideoSend(taggedSubgroupName: String?, completion: @escaping (Bool) -> Void)
PlanetKitCall
class 1-to-1 calllet 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 calllet 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 callfunc change(mic: PlanetKitAudioMicControllable?)
func change(spk: PlanetKitAudioSpkControllable?)
func setAudioSessionHandler(_ handler: PlanetKitAudioSessionHandler?)
func setDefaultSampleRate(mic: Float64)
func setDefaultSampleRate(spk: Float64)
PlanetKitConferenceDelegate
protocol Group callpeersVideoDidPause(_ conference: PlanetKitConference, videoPauses: [PlanetKitConferencePeerVideoPause])
peersVideoDidResume(_ conference: PlanetKitConference, peers: [PlanetKitConferencePeer])
PlanetKitSendDataSessionDelegate
protocol 1-to-1 callGroup callfunc sendDataSessionDidUnsupport(_ session: PlanetKitSendDataSession)
PlanetKitRecvDataSessionDelegate
protocol 1-to-1 callGroup callfunc recvDataSessionDidTooLongQueuedData(_ session: PlanetKitRecvDataSession, enabled: Bool)
func recvDataSessionDidUnsupport(_ session: PlanetKitRecvDataSession)
PlanetKitDisconnectReason
enum 1-to-1 callGroup callcase 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 callcase answered
PlanetKitConferenceParam
class Group callvar roomType: PlanetKitConferenceRoomType { get set }
PlanetKitConferenceRoomType
enum Group callPlanetKitVideoCaptureDevice
class 1-to-1 callGroup callvar preferredMirrored: NSNumber? { get set }
PlanetKitCamera
class 1-to-1 callGroup callstatic func getVideoRotation(orientation:mirrored:)
PlanetKitVideoBuffer
class 1-to-1 callGroup callvar mirrored : Bool { get set }
PlanetKitLogLevel
enum 1-to-1 callGroup callcase info = 5
case error = 2
case critical = 1
case none = 0
PlanetKitAudioSessionHandler
protocol 1-to-1 callGroup callPlanetKitAudioSessionContext
class 1-to-1 callGroup callPlanetKitVideoCapability
class 1-to-1 callGroup callstatic var callScreenShareSendDefault: PlanetKitVideoCapability
static var conferenceScreenShareSendDefault: PlanetKitVideoCapability
PlanetKitMakeCallSettingBuilder
class 1-to-1 callfunc withMyScreenShareSendCapabilityKey(capability: PlanetKitVideoCapability) -> PlanetKitMakeCallSettingBuilder
PlanetKitVerifyCallSettingBuilder
class 1-to-1 callfunc withMyScreenShareSendCapabilityKey(capability: PlanetKitVideoCapability) -> PlanetKitVerifyCallSettingBuilder
PlanetKitJoinConferenceSettingBuilder
class Group callfunc withMyScreenShareSendCapabilityKey(capability: PlanetKitVideoCapability) -> PlanetKitJoinConferenceSettingBuilder
func withDisconnectBadNetwork(enable: Bool) -> PlanetKitJoinConferenceSettingBuilder
PlanetKitMediaDisableReason
enum 1-to-1 callGroup callcase noMediaSrc
case noRecvMedia
PlanetKitSubgroup
class Group callfunc isPeerScreenShared(peerId: PlanetKitUserId) -> Bool
PlanetKitScreenControllable
protocol 1-to-1 callGroup callfunc addReceiver(_ videoOutDelegate: PlanetKitVideoOutputDelegate)
func removeReceiver(_ videoOutDelegate: PlanetKitVideoOutputDelegate)
func setModifier(_ videoModifier: PlanetKitVideoModifierDelegate?)