Migrating from PlanetKit 4.4 to 5.5
This guide provides detailed steps and considerations for migrating from PlanetKit 4.4 to PlanetKit 5.5.
Requirements
Swift Package Manager
If you are using Swift Package Manager (SPM), add the following repository URL to your Xcode project's package dependencies.
For more information on how to add a package dependency, see Apple Developer documentation.
CocoaPods
If you want to keep using CocoaPods, change the existing PlanetKit-iOS
or PlanetKit-macOS
Pod to PlanetKit-SDK-Apple
.
The following Podfile
is an example.
## PlanetKit 5.5 or higher
target 'MyApp' do
pod 'PlanetKit-SDK-Apple', '~> 5.5', :source => 'https://github.com/line/planet-kit-cocoapods-specs.git'
end
Migration
Breaking change Improve camera control
PlanetKit has been enhanced to turn on the camera only when sending data to Planet Cloud.
API changes
Changed
-
PlanetKitCall
class 1-to-1 callPrevious 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 callPrevious 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 }
Added
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
Removed
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
Code examples
Start camera preview
-
Example of an earlier version
class PreviewVideoViewController: UIViewController {
....
var myVideoView: PlanetKitMTKView!
private func setupView() {
PlanetKitCamera.shared.setModifier(self)
PlanetKitCamera.shared.addReceiver(myVideoView)
PlanetKitCamera.shared.open()
PlanetKitCamera.shared.start()
}
}
extension VideoViewController: PlanetKitVideoModifierDelegate {
func videoOutput(_ videoBuffer: PlanetKitVideoBuffer) {
....
}
} -
New version example
class PreviewVideoViewController: UIViewController {
....
var myVideoView: PlanetKitMTKView!
private func setupView() {
PlanetKitCameraManager.shared.previewModifier = self
PlanetKitCameraManager.shared.startPreview(delegate: myVideoView)
}
}
extension VideoViewController: PlanetKitVideoModifierDelegate {
func videoOutput(_ videoBuffer: PlanetKitVideoBuffer) {
....
}
}
Switch to another camera device
-
Example of an earlier version
class CameraDeviceViewController: UIViewController {
....
private var devices: [PlanetKitVideoCaptureDevice] = []
private var deviceNames: [String] = []
private func refreshDevices() {
devices = PlanetKitCamera.shared.devices
deviceNames.removeAll()
for device in devices {
deviceNames.append(device.name)
}
}
private func change(device: PlanetKitVideoCaptureDevice) {
PlanetKitCamera.shared.change(device: device)
}
} -
New version example
class CameraDeviceViewController: UIViewController {
....
private var deviceInfos: [PlanetKitVideoCaptureDeviceInfo] = []
private var deviceNames: [String] = []
private func refreshDevices() {
let currentDeviceInfo = PlanetKitCameraManager.shared.currentDeviceInfo
deviceInfos = PlanetKitCameraManager.shared.deviceInfos
var selectedIndex = -1
deviceNames.removeAll()
for (index, deviceInfo) in deviceInfos.enumerated() {
deviceNames.append(deviceInfo.name)
if currentDeviceInfo?.uniqueID == deviceInfo.uniqueID {
selectedIndex = index
}
}
}
private func change(deviceInfo: PlanetKitVideoCaptureDeviceInfo) {
PlanetKitCameraManager.shared.change(deviceInfo: deviceInfo)
}
}
Add a receiver for the local user's video view
-
Example of an earlier version
class VideoViewController: UIViewController {
....
var call: PlanetKitCall!
var myVideoView: PlanetKitMTKView!
private func setMyVideo() {
call.setMyVideoReceiver(myVideoView)
}
} -
New version example
class VideoViewController: UIViewController {
....
var call: PlanetKitCall!
var myVideoView: PlanetKitMTKView!
private func setMyVideo() {
call.myVideoStream.addReceiver(myVideoView)
}
}
Use a custom camera for the video source
import PlanetKit
class CustomCamera: PlanetKitCustomCamera {
static var shared = CustomCamera()
// Implement the abstract method to handle FPS limit updates
override func processFpsLimitUpdate(enabled: Bool, fps: Int32) {
// Handle the FPS limit update
// If `enabled` is true, adjust your frame generation logic to according to the `fps`
}
// Method to simulate video buffer processing
func processVideoBuffer(buffer: CMSampleBuffer) {
guard let targetBuffer = PlanetKitVideoBuffer.getPreferredSampleBuffer(buffer) else {
return
}
let timestamp = CMSampleBufferGetPresentationTimeStamp(targetBuffer)
// Check if video buffer can be sent. If false, drop the buffer.
guard isVideoSendAvailable(timestamp: timestamp) else { return }
let videoBuffer = PlanetKitVideoBuffer(sampleBuffer: targetBuffer,
timestamp: timestamp,
rotation: .rotation0,
position: .unknown,
sender: nil,
source: .camera)
sendVideo(videoBuffer: videoBuffer)
}
}
// Start using the custom camera.
PlanetKitCameraManager.shared.setCustomCamera(CustomCamera.shared)
// Reset to the default device.
PlanetKitCameraManager.shared.resetToDefaultCamera()
Breaking change Remove the reason
parameter from disableVideo()
of PlanetKitConference
- The
reason
parameter in thedisableVideo
function ofPlanetKitConference
has been removed because it serves no purpose. - Unused enum values in
PlanetKitMediaDisableReason
have been removed.
API changes
Changed
-
PlanetKitConference
class Group callPrevious PlanetKit 5.5 func disableVideo(reason: PlanetKitMediaDisableReason, stopCamera: Bool = true, completion: @escaping (Bool)->Void)
func disableVideo(stopCamera: Bool = true, completion: @escaping (Bool)->Void)
Removed
PlanetKitMediaDisableReason
enum 1-to-1 callGroup callcase noMediaSrc
case noRecvMedia
Breaking change Rename audio input/output
In audio system, the input/output*
names were considered confusing, so they have been changed to mic/spk*
.
API changes
Changed
-
PlanetKitAudioDeviceType
enum 1-to-1 callGroup callPrevious PlanetKit 5.5 PlanetKitAudioDirection.input
.mic
PlanetKitAudioDirection.output
.spk
-
PlanetKitAudioDeviceChangeDelegate
enum 1-to-1 callGroup callPrevious 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 callPrevious PlanetKit 5.5 func didChangeVolume(_ direction: PlanetKitAudioDirection, volume: Float)
func didChangeVolume(_ type: PlanetKitAudioDeviceType, volume: Float)
-
PlanetKitAudioMicControllable
protocol 1-to-1 callGroup callPrevious PlanetKit 5.5 var inputDevice: PlanetKitAudioDevice? { get }
var micDevice: PlanetKitAudioDevice? { get }
-
PlanetKitAudioSpkControllable
protocol 1-to-1 callGroup callPrevious PlanetKit 5.5 var outputDevice: PlanetKitAudioDevice? { get }
var spkDevice: PlanetKitAudioDevice? { get }
-
PlanetKitAudio
class 1-to-1 callGroup callPrevious 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 Add audio description
Replaced audio volume level with audio description.
The audio description is information that comes with audio frame data when it is received and is updated periodically.
API changes
Changed
-
PlanetKitSubgroupManager
class Group callPrevious 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 callPrevious 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 callPrevious 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 callPrevious PlanetKit 5.5 PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)
func myAudioDescriptionDidUpdate(_ description: PlanetKitMyAudioDescription)
-
PlanetKitAudioDeviceVolumeDelegate
protocol 1-to-1 callGroup callPrevious PlanetKit 5.5 PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)
func volumeDidUpdate(_ deviceType: PlanetKitAudioDeviceType, volume: Float)
-
PlanetKitPeerAudioDescription
class 1-to-1 callGroup callPrevious 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 callPrevious PlanetKit 5.5 PlanetKitAudioSpkVolumeDelegate.didRefreshSpkVolumeMeter(_ :level:)
func peerAudioDescriptionsDidUpdate(_ descriptions: [PlanetKitPeerAudioDescription], averageVolumeLevel: Int8)
Added
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
Removed
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
Code examples
override func viewDidLoad() {
super.viewDidLoad()
....
conference.setPeerAudioDescriptionReceiver(self)
conference.setMyAudioDescriptionReceiver(self)
}
extension VideoConferenceViewController: PlanetKitPeerAudioDescriptionDelegate {
func peerAudioDescriptionsDidUpdate(_ descriptions: [PlanetKitPeerAudioDescription], averageVolumeLevel: Int8) {
DispatchQueue.main.async {
self.resetAllPeerVolumes()
for description in descriptions {
// TODO: Update audio volumes or media route
}
}
}
}
extension VideoConferenceViewController: PlanetKitMyAudioDescriptionDelegate {
func myAudioDescriptionDidUpdate(_ description: PlanetKitMyAudioDescription) {
DispatchQueue.main.async {
// TODO: Update my volume using description.averageVolumeLevel
}
}
}
Breaking change Modify APIs of delegates, modifiers, and receivers related to audio and video
- Changed delegates, modifiers, and receivers to assignable member variables and removed corresponding setters functions.
API changes
Changed
-
PlanetKitAudioMicControllable
protocol 1-to-1 callGroup callPrevious 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 callPrevious 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 callPrevious 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 callPrevious 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 }
Code examples
The following is a code example for setting PlanetKitMyAudioDescriptionDelegate
for the local user's audio.
// Previous
extension MyAudioDescriptionView: PlanetKitMyAudioDescriptionDelegate {
func setDelegate(call: PlanetKitCall) {
call.setMyAudioDescriptionReceiver(self)
}
func removeDelegate(call: PlanetKitCall) {
call.resetMyAudioDescriptionReceiver()
}
}
// PlanetKit 5.5
extension MyAudioDescriptionView: PlanetKitMyAudioDescriptionDelegate {
func setDelegate(call: PlanetKitCall) {
call.myAudioDescriptionReceiver = self
}
func removeDelegate(call: PlanetKitCall) {
call.myAudioDescriptionReceiver = nil
}
}
Breaking change Remove mic
, spk
from PlanetKitCall
and PlanetKitConference
- Removed member variables
mic
,spk
fromPlanetKitCall
andPlanetKitConference
. Please useaudioManager
to access the session'sPlanetKitAudioMicControllable
andPlanetKitAudioSpkControllable
.
API changes
Changed
-
PlanetKitCall
class 1-to-1 callPrevious PlanetKit 5.5 var audio: PlanetKitAudioManager?
var audioManager: PlanetKitAudioManager
-
PlanetKitConference
class Group callPrevious PlanetKit 5.5 var audio: PlanetKitAudioManager?
var audioManager: PlanetKitAudioManager
Removed
-
PlanetKitCall
class 1-to-1 callvar mic: PlanetKitAudioMicControllable
var spk: PlanetKitAudioSpkControllable
-
PlanetKitConference
class Group callvar mic: PlanetKitAudioMicControllable
var spk: PlanetKitAudioSpkControllable
Breaking change Remove PlanetKitAudioSessionHandler
PlanetKitAudioSessionHandler
has been removed and PlanetKitAudioSessionSettings
for audio open and close settings have been added to PlanetKitAudio
.
API changes
Added
PlanetKitAudioSessionSettings
class 1-to-1 callGroup callPlanetKitAudio
class 1-to-1 callGroup callvar openSettings: PlanetKitAudioSessionSettings? { get set }
var closeSettings: PlanetKitAudioSessionSettings? { get set }
Removed
PlanetKitAudioSessionHandler
protocol 1-to-1 callGroup callPlanetKitAudioSessionContext
class 1-to-1 callGroup call
Code examples
The following is a code example for setting AVAudioSession.Category
to playAndRecord
on audio open and soloAmbient
on audio close.
-
Previous implementation
class AudioSessionHandler: PlanetKitAudioSessionHandler {
func audioSessionWillOpen(_ audio: PlanetKitAudio, context: PlanetKitAudioSessionContext) -> Bool {
context.category = .playAndRecord
return true
}
func audioSessionWillClose(_ audio: PlanetKitAudio, context: PlanetKitAudioSessionContext) -> Bool {
context.category = .soloAmbient
return true
}
}
PlanetKitAudio.shared.audioSessionHandler = AudioSessionHandler() -
New implementation
let openSettings = PlanetKitAudioSessionSettings()
openSettings.category = .playAndRecord
PlanetKitAudio.shared.openSettings = openSettings
let closeSettings = PlanetKitAudioSessionSettings()
closeSettings.category = .soloAmbient
closeSettings.mode = .default
closeSettings.options = []
closeSettings.audioPort = .none
PlanetKitAudio.shared.closeSettings = closeSettings
Breaking change Make APIs of PlanetKitAudio
more intuitive
- Made member variables of
PlanetKitAudio
assignable and removed corresponding setter functions.
API changes
Changed
-
PlanetKitAudio
class 1-to-1 callGroup callPrevious PlanetKit 5.5 var spk: PlanetKitAudioSpkControllable? { get }
var spk: PlanetKitAudioSpkControllable? { get set }
var mic: PlanetKitAudioMicControllable? { get }
var mic: PlanetKitAudioMicControllable? { get set }
Added
PlanetKitAudio
class 1-to-1 callGroup callvar defaultIOBufDuration: Float64
var defaultMicSampleRate: Float64
var defaultSpkSampleRate: Float64
Removed
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 Improve connected parameter and verified parameter
- Added more information about connecting 1-to-1 calls and group calls and verifying 1-to-1 calls.
- Related APIs have been changed.
API changes
Changed
-
PlanetKitCallDelegate
protocol 1-to-1 callPrevious 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 callPrevious 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 callPrevious PlanetKit 5.5 var isSendVideoHwCodecEnabled { get }
var isVideoHwCodecEnabled { get }
-
PlanetKitConference
class Group callPrevious PlanetKit 5.5 var isSendVideoHwCodecEnabled { get }
var isVideoHwCodecEnabled { get }
Added
PlanetKitCallConnectedParam
class 1-to-1 callPlanetKitCallKitParam
class 1-to-1 calllet useResponderPreparation: Bool
let startMessage: PlanetKitCallStartMessage?
Breaking change Add PlanetKitCallStartMessage
to replace initData
PlanetKitCallStartMessage
has been added to replaceinitData
parameter used inPlanetKitCall
API.- You must create
PlanetKitCallStartMessage
before setting it in thePlanetKitCallParam
.
API changes
Changed
-
PlanetKitCallDelegate
protocol 1-to-1 callGroup callPrevious PlanetKit 5.5 func callDidVerify(_ call: PlanetKitCall, initData: String?)
func didVerify(_ call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Bool)
-
PlanetKitCall
class 1-to-1 callPrevious 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 callPrevious 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)
Added
PlanetKitCallStartMessage
class 1-to-1 call
Breaking change Update PlanetKitDisconnectReason
PlanetKitDisconnectReason
has been updated andPlanetKitDisconnectSource
andPlanetKitDisconnectedParam
have been added to provide more information about the disconnect event of 1-to-1 calls and group calls.
API changes
Changed
-
PlanetKitDisconnectReason
enum 1-to-1 callGroup callPrevious PlanetKit 5.5 case serviceAPIKeyError
case serviceAccessTokenError
-
PlanetKitCallDelegate
protocol 1-to-1 callPrevious PlanetKit 5.5 func callDidDisconnect(_ call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?)
func didDisconnect(_ call: PlanetKitCall, disconnected: PlanetKitDisconnectedParam)
-
PlanetKitConferenceDelegate
protocol Group callPrevious PlanetKit 5.5 func conferenceDidLeave(_ conference: PlanetKitConference, reason: PlanetKitDisconnectReason, userCode: String?)
func didDisconnect(_ conference: PlanetKitConference, disconnected: PlanetKitDisconnectedParam)
Added
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
Removed
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 Change the logging level and settings
The log level has been redesigned, and it has been modified to allow specifying the log size.
Log output is disabled by default at the silent
log level.
If you want to provide minimal logs in a deployment build, please set the log level and log size.
API changes
Changed
-
PlanetKitInitialSettingBuilder
class 1-to-1 callGroup callPrevious PlanetKit 5.5 func withEnableKitLogKey(level: PlanetKitLogLevel, module: PlanetKitLogModule) -> PlanetKitInitialSettingBuilder
func withEnableKitLogKey(level: PlanetKitLogLevel, enable: Bool, logSize: PlanetKitLogSizeLimit) -> PlanetKitInitialSettingBuilder
Added
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
Removed
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:)
Code examples
-
Previous implementation
// Minimized logging for release
var builder = PlanetKitInitialSettingBuilder()
.withEnableKitLogKey(level: .error, enable: true)
// Full logging for debugging
var builder = PlanetKitInitialSettingBuilder()
.withEnableKitLogKey(level: .info, enable: true) -
New implementation
// Minimized logging for release
var builder = PlanetKitInitialSettingBuilder()
.withEnableKitLogKey(level: .simple, enable: true, logSize: .small)
// Full logging for debugging
var builder = PlanetKitInitialSettingBuilder()
.withEnableKitLogKey(level: .detailed, enable: true, logSize: .unlimited)
Breaking change Add view mirroring and rotation at the video render view
PlanetKitMTKView.mirroredType
and PlanetKitMTKView.rotation
have been added to support video mirroring and video rotation when rendering video with PlanetKitMTKView
.
API changes
Changed
-
PlanetKitVideoBuffer
class 1-to-1 callGroup callPrevious 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)
Added
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 }
Removed
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 }
Code examples
For the front camera, the mirrored status can be turned off as follows.
-
Previous implementation
let device = conference.camera?.currentDevice
device?.preferredMirrored = false
conference.camera?.change(device: device) -
New implementation
override func viewDidLoad() {
super.viewDidLoad()
let mtkView = PlanetKitMTKView(frame: view.bounds, device: nil)
mtkView.mirroredType = .unmirrored
.....
}
Breaking change Change the API for data sessions
- The
unsupported
reason inPlanetKitDataSessionFailReason
, which was used when the session was closed due to the peer callingunsupportInboundDataSession()
, has been removed. - The
didClose
callback has been added to bothPlanetKitInboundDataSessionDelegate
andPlanetKitOutboundDataSessionDelegate
to notify when a data session is closed. - Closure of a data session due to
unsupported
can also be detected through thedidClose
event.
API changes
Changed
-
PlanetKitInboundDataSessionDelegate
protocol 1-to-1 callGroup callPrevious 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 callPrevious PlanetKit 5.4 func outboundDataSessionDidTooLongQueuedData(_ session: PlanetKitOutboundDataSession, enabled: Bool)
func didTooLongQueuedData(_ session: PlanetKitOutboundDataSession, enabled: Bool)
Added
-
PlanetKitDataSessionClosedReason
enum 1-to-1 callGroup call -
PlanetKitInboundDataSessionDelegate
protocol 1-to-1 callGroup callfunc didClose(_ session: PlanetKitInboundDataSession, reason: PlanetKitDataSessionClosedReason)
-
PlanetKitOutboundDataSessionDelegate
protocol 1-to-1 callGroup callfunc didClose(_ session: PlanetKitOutboundDataSession, reason: PlanetKitDataSessionClosedReason)
Removed
PlanetKitDataSessionFailReason
enum 1-to-1 callGroup callcase unsupported
Code examples
-
Example of an earlier version
call.makeOutboundDataSession(streamId: stream, type: .reliableMsg, delegate: delegate) { dataSession, failReason in
if failReason == .unsupported {
// Earlier versions handle errors here
}
....
} -
New version example
extension PhotoSender: PlanetKitOutboundDataSessionDelegate {
func didClose(_ session: PlanetKitOutboundDataSession, reason: PlanetKitDataSessionClosedReason) {
if reason == .unsupported {
// Handle unsupported case here
}
}
....
}
Breaking change Revise data session with PlanetKitDataSessionFailReason
- Data session failure information has been added.
- Related APIs have been changed.
API changes
Changed
-
PlanetKitSendDataSession
class →PlanetKitOutboundDataSession
class 1-to-1 callGroup 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
Added
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?
Removed
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 Change the hold feature
The hold function will pause receiving peer's video or audio all the time.
API changes
Changed
-
PlanetKitCall
class 1-to-1 callPrevious PlanetKit 5.5 func holdCall(reason: String?, pauseRecv: Bool, completion: @escaping (Bool)->Void)
func holdCall(reason: String?, completion: @escaping (Bool)->Void)
-
PlanetKitConferencePeer
class Group callPrevious PlanetKit 5.5 PlanetKitConferencePeerInfo.hold
var holdStatus: PlanetKitHoldStatus
-
PlanetKitHoldStatus
class Group callPrevious PlanetKit 5.5 PlanetKitHold.isHeld
let isOnHold: Bool
PlanetKitHold.holdReason
let holdReason: String?
Removed
PlanetKitConferencePeerHold
class Group calllet peerPausedRecv: Bool
Spec change Hold feature now stops screen share from being sent
If you call hold while screen sharing, the screen share stops and callback event occurs.
API changes
Added
PlanetKitCallDelegate
protocol 1-to-1 callfunc myScreenShareDidStopByHold(_ conference: PlanetKitConference)
PlanetKitConferenceDelegate
protocol Group callfunc myScreenShareDidStopByHold(_ conference: PlanetKitConference)
Removed
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 Remove the high-priority audio transmission
- The high-priority audio transmission feature has been deprecated.
API changes
Removed
PlanetKitConference
class Group calllet isHighPriorityAudio: Bool
func setHighPriorityAudioSend(_ isHighPriority: Bool, completion: @escaping (Bool)->Void)
Spec change Add the verified
state to PlanetKitCallState
- The call state between the call verified event and the call connected/disconnected event is changed to the
verified
state from thewaitAnswer
state. - In addition, the
answered
state has been removed.
API changes
Added
PlanetKitCallState
enum 1-to-1 callcase verified
Removed
PlanetKitCallState
enum 1-to-1 callcase answered
Spec change Remove the room attribute
You can create subgroups without the room attribute settings since PlanetKit 5.2.
API changes
Removed
PlanetKitConference
class Group 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 Add device rotation at the video capture device
You can use rotation
to send the rotated camera image to the other participants.
API changes
Added
PlanetKitVideoCaptureDeviceInfo
class 1-to-1 callGroup callvar rotation: PlanetKitVideoRotation { get set }
Removed
PlanetKitRenderingPolicy
enum 1-to-1 callGroup callcase single
case tripleBuffering
PlanetKitCamera
class 1-to-1 callGroup callstatic func getVideoRotation(orientation: PlanetKitUIOrientation, mirror: Bool) -> PlanetKitVideoRotation
Code examples
The following is a code example for applying a 90-degree clockwise rotation to the camera video.
guard let deviceInfo = PlanetKitCameraManager.shared.currentDeviceInfo else {
return
}
deviceInfo.rotation = .rotation90
PlanetKitCameraManager.shared.change(deviceInfo: deviceInfo)
Spec change Change the specification of sendShortData()
- Multicast option of the short data transmission feature in group calls has been deprecated. Supported options are unicast and broadcast.
- In previous PlanetKit versions, the sum of the type size and short data size must not exceed 900 bytes.
- Since PlanetKit 5.2, the size of the type must not exceed 100 bytes and the size of short data must not exceed 800 bytes.
API changes
Changed
-
PlanetKitConference
class 1-to-1 callGroup callPrevious 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 Add limitation to the display name
- The
displayName
property inPlanetKitConferenceParam
is now limited to 128 bytes, including null termination. - Any trailing part of the string that exceeds the maximum size is discarded.
Spec change Change the range of data session stream ID
- The previous specification for range of data session stream ID was from 100 to 1000, but the upper limit has been changed to 999.
Spec change Change the specification regarding the size limit of app server data
- The size limit for app server data (formerly
stid
) has been increased from 256 bytes to 4096 bytes.
Enhancement Use PlanetKitPeerControl
instead of calling requestPeerVideo()
and stopPeerVideo()
PlanetKitPeerControl
has been added to support peer event/method isolation which allows applications to design a view/view model for a peer with less dependency onPlanetKitConference
andPlanetKitConferenceDelegate
.- Create
PlanetKitPeerControl
instance for a peer viaPlanetKitConference.createPeerControl()
and the instance's methods and events will specifically targeted for the peer. - Once
PlanetKitPeerControl
andPlanetKitPeerControlDelegate
become available for a peer, you can update and control the peer's view/view model usingPlanetKitPeerControl
andPlanetKitPeerControlDelegate
. This significantly reduces the needs to parse the peer's event fromPlanetKitConferenceDelegate
and provide extra parameters for peer methods inPlanetKitConference
.
API changes
Added
PlanetKitPeerControlDelegate
protocol Group callPlanetKitPeerControl
class Group callPlanetKitConference
class Group callfunc createPeerControl(peer: PlanetKitConferencePeer) -> PlanetKitPeerControl?
Code examples
-
Create your peer view or view model with a
PlanetKitPeerControl
property and necessary view properties.class YourPeerView {
var mtkView: PlanetKitMTKView?
var peerControl: PlanetKitPeerControl?
} -
Extend your class to adopt and conform to
PlanetKitPeerControlDelegate
protocol.extension YourPeerView: PlanetKitPeerControlDelegate {
// implement delegate functions as needed
} -
Create
PlanetKitPeerControl
.extension YourPeerView {
func createPeerControl(peer: PlanetKitConferencePeer) -> Bool {
guard let peerControl = PlanetKitManager.shared.conference?.createPeerControl(peer: peer) else {
NSLog("peer control create failed.")
return false
}
self.peerControl = peerControl
return true
}
} -
Register
PlanetKitPeerControl
.extension YourPeerView {
func registerPeerControl() {
peerControl?.register(delegate: self) { success in
NSLog("registerPeerControl result: \(success).")
}
}
} -
Handle events from
PlanetKitPeerControlDelegate
to play peer video.extension YourPeerView: PlanetKitPeerControlDelegate {
func didUpdateVideo(_ peerControl: PlanetKitPeerControl, subgroup: PlanetKitSubgroup, status: PlanetKitVideoStatus) {
if status.isEnabled {
// When the peer's video status is enabled, start rendering the peer's video.
self.peerControl?.startVideo(maxResolution: .recommended, delegate: self.mtkView!, subgroupName: self.peerControl?.peer.currentVideoSubgroupName) { success in
NSLog("videoDidUpdate video start \(String(describing: self.peerControl?.peer.id)) success: \(success)")
}
}
else {
// Otherwise, stop rendering the peer's video.
self.peerControl?.stopVideo() { success in
NSLog("videoDidUpdate video stop \(String(describing: self.peerControl?.peer.id))")
}
}
}
} -
Unregister
PlanetKitPeerControl
.extension YourPeerView {
func unregisterPeerControl() {
peerControl?.unregister() { success in
}
}
}
Enhancement Add PlanetKitMyMediaStatus
Added PlanetKitMyMediaStatus
to get the local user's media status and observe the local user's media status change using PlanetKitMyMediaStatusDelegate
.
API changes
Added
PlanetKitMyMediaStatusDelegate
protocol Group callPlanetKitMyMediaStatus
class Group callPlanetKitCall
class 1-to-1 callvar myMediaStatus: PlanetKitMyMediaStatus { get }
PlanetKitConference
class Group callvar myMediaStatus: PlanetKitMyMediaStatus { get }
Removed
PlanetKitConference
class Group callvar myVideoStatus: PlanetKitVideoStatus { get }
var isMyAudioMuted: Bool { get }
Code examples
-
Use
PlanetKitMyMediaStatus
to implement the local user's UI view.class MyView: UIView {
@IBOutlet private weak var status: UILabel!
func setupView(conference: PlanetKitConference) {
conference.myMediaStatus.addHandler(self) { success in }
}
func clearView(conference: PlanetKitConference) {
conference.myMediaStatus.removeHandler(self) { success in }
}
}
extension MyView: PlanetKitMyMediaStatusDelegate {
func didMuteMic(_ myMediaStatus: PlanetKitMyMediaStatus) {
DispatchQueue.main.async {
status.text = "muted"
}
}
}
Enhancement Use PlanetKitCCParam
when calling verifyCall()
You can now parse the CCParam received by the push message to obtain the desired data.
API changes
Changed
-
PlanetKitManager
class 1-to-1 callPrevious 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
Added
PlanetKitCCParam
class 1-to-1 call
Code examples
guard let param = message?["cc_param"] as? String else { return }
guard let ccParam = PlanetKitCCParam(ccParam: param) else { return }
....
let result = PlanetKitManager.shared.verifyCall(myUserId: myUserId, ccParam: ccParam, settings: settings, delegate: manageable)
Enhancement Add PlanetKitInitialMyVideoState
PlanetKitInitialMyVideoState
is an enum added to determine the state of the local user's video when a video call is started or activated.
- This change allows you to set the initial video state to either resumed or paused.
- The default value for a property or parameter of type
PlanetKitInitialMyVideoState
isPlanetKitInitialMyVideoState.resume
.
API changes
Changed
-
PlanetKitCall
class 1-to-1 callPrevious 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 callPrevious 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)
Added
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 change list
Changed
-
PlanetKitConferencePeer
class Group callPrevious 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 callPrevious 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 callPrevious PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfo
let peer: PlanetKitConferencePeer
let subscribedGroupNames: [String]
let subscribedSubgroupNames: [String]
let unsubscribedGroupNames: [String]
let unsubscribedSubgroupNames: [String]
-
PlanetKitConferencePeerHold
class Group callPrevious PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfo
let peer: PlanetKitConferencePeer
-
PlanetKitConferencePeerVideoPause
class Group callPrevious PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfo
let peer: PlanetKitConferencePeer
-
PlanetKitConferenceSetSharedContent
class Group callPrevious PlanetKit 5.5 let peerInfo: PlanetKitConferencePeerInfo
let peer: PlanetKitConferencePeer
-
PlanetKitManager
class 1-to-1 callPrevious 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 callPrevious PlanetKit 5.5 PlanetKitHold.isHeld
let isOnHold: Bool
PlanetKitHold.holdReason
let holdReason: String?
-
PlanetKitScreen
class 1-to-1 callGroup callPrevious PlanetKit 5.5 func setOverlay(windowLevel: CGWindowLevel, processIdentifier: Int32)
func setOverlay(windowIDs: Set<CGWindowID>)
-
PlanetKitAudioDeviceType
enum 1-to-1 callGroup callPrevious PlanetKit 5.5 PlanetKitAudioDirection.input
case mic
PlanetKitAudioDirection.output
case spk
-
PlanetKitAudioDeviceChangeDelegate
enum 1-to-1 callGroup callPrevious 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 callPrevious PlanetKit 5.5 func didChangeVolume(_ direction: PlanetKitAudioDirection, volume: Float)
func didChangeVolume(_ type: PlanetKitAudioDeviceType, volume: Float)
-
PlanetKitAudioMicControllable
protocol 1-to-1 callGroup callPrevious 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 callPrevious 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 callPrevious 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 callPrevious 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 callPrevious 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 callPrevious 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 callPrevious PlanetKit 5.5 PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)
func myAudioDescriptionDidUpdate(_ description: PlanetKitMyAudioDescription)
-
PlanetKitAudioDeviceVolumeDelegate
protocol 1-to-1 callGroup callPrevious PlanetKit 5.5 PlanetKitAudioMicVolumeDelegate.didRefreshMicVolumeLevel(_:)
func volumeDidUpdate(_ deviceType: PlanetKitAudioDeviceType, volume: Float)
-
PlanetKitPeerAudioDescription
class 1-to-1 callGroup callPrevious 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 callPrevious PlanetKit 5.5 PlanetKitAudioSpkVolumeDelegate.didRefreshSpkVolumeMeter(_ :level:)
func peerAudioDescriptionsDidUpdate(_ descriptions: [PlanetKitPeerAudioDescription], averageVolumeLevel: Int8)
-
PlanetKitInitialSettingBuilder
class 1-to-1 callGroup callPrevious 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 callPrevious 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 callPrevious PlanetKit 5.5 func withEnableScreenSharingKey(broadcastPort: UInt16, broadcastRxToken: String, broadcastTxToken: String) -> PlanetKitVerifyCallSettingBuilder
func withEnableScreenShareKey(broadcastPort : UInt16, broadcastPeerToken: String, broadcastMyToken: String) -> PlanetKitVerifyCallSettingBuilder
-
PlanetKitJoinConferenceSettingBuilder
class Group callPrevious 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 callPrevious 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 callPrevious PlanetKit 5.5 case incomming
case incoming
-
PlanetKitCallDelegate
protocol 1-to-1 callPrevious 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 callPrevious PlanetKit 5.5 case kitInternalInitializaionError = 2999
case kitInternalInitializationError = 2999
-
PlanetKitScreenShare.BroadcastError
enum 1-to-1 callGroup callPrevious PlanetKit 5.5 case kitInternalInitializaionError
case kitInternalInitializationError
-
PlanetKitAudio
class 1-to-1 callGroup callPrevious PlanetKit 5.5 var isBluethoothInput: Bool { get }
var isBluetoothInput: Bool { get }
-
PlanetKitScreenShare.BroadcastError
enum 1-to-1 callGroup callPrevious PlanetKit 5.5 case unknow
case unknown
-
PlanetKitConfenreceVideoUpdatedPeer
class →PlanetKitConferenceVideoUpdatedPeer
class Group call -
PlanetKitCallParam
class 1-to-1 callPrevious 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 callPrevious 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 callPrevious PlanetKit 5.5 case serviceAPIKeyError = 1501
case serviceAccessTokenError = 1501
-
PlanetKitVideoBuffer
class 1-to-1 callGroup callPrevious 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
Added
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
Removed
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?)