本文にスキップする
Version: 6.0

リリースノート"

iOS/macOS向けPlanetKit 6.0のリリースノートです。

PlanetKit 6.0

リリース日:2025-05-16

カメラデリゲートのインタフェース改善

PlanetKitVideoCaptureDeviceInfoパラメーターでビデオキャプチャーのデバイスについて、より詳細な情報を提供するようにPlanetKitCameraDelegateプロトコルをアップデートしました。

API

変更
  • PlanetKitCameraDelegate protocol 1-to-1 callGroup call

    以前バージョンPlanetKit 6.0
    func didStart()func didStart(_ deviceInfo: PlanetKitVideoCaptureDeviceInfo)
    func didStop(_ error: NSError?)func didStop(_ deviceInfo: PlanetKitVideoCaptureDeviceInfo)
追加
  • PlanetKitCameraDelegate protocol 1-to-1 callGroup call
    • func didUpdate(_ deviceInfo: PlanetKitVideoCaptureDeviceInfo?)
    • func didFail(_ error: NSError, deviceInfo: PlanetKitVideoCaptureDeviceInfo?)

ビデオ性能の設定APIの改善

ビデオ性能(capability)設定をPlanetKitManagerから行うように変更し、明確なAPIネーミングで一貫性を改善しました。

  • ビデオハードウェアコーデックの設定は、これで各1対1通話またはグループ通話ごとに設定する代わりにPlanetKitManagerによって設定されます。
  • ビデオ性能の設定APIでサムネイル解像度はサポートされなくなりました。

API

変更
  • PlanetKitVideoCapability class 1-to-1 callGroup call

    以前バージョンPlanetKit 6.0
    var resolution: PlanetKitVideoResolutionCapability { get set }var maxResolution: PlanetKitVideoResolutionCapability { get }
    var fps: PlanetKitVideoFps { get set }var maxFps: PlanetKitVideoFps { get }
    init(resolution: PlanetKitVideoResolutionCapability, fps: PlanetKitVideoFps)init(maxResolution: PlanetKitVideoResolutionCapability, maxFps: PlanetKitVideoFps)
  • パラメーターの名前変更 1-to-1 callGroup call

    以前バージョンPlanetKit 6.0
    PlanetKitCallConnectedParam.isVideoHwCodecEnabledPlanetKitCallConnectedParam.isVideoHardwareCodecEnabled
    PlanetKitConferenceConnectedParam.isVideoHwCodecEnabledPlanetKitConferenceConnectedParam.isVideoHardwareCodecEnabled
追加
  • PlanetKitVideoResolutionCapability enum 1-to-1 callGroup call
    • case qvga - 最大解像度 320x240
    • case vga - 最大解像度 640x480
    • case hd - 最大解像度 1280x960
    • case fhd - 最大解像度 1920x1080
  • PlanetKitVideoCapabilityUsage enum 1-to-1 callGroup call
    • case callSend
    • case callReceive
    • case conferenceSend
    • case conferenceReceive
  • PlanetKitPreferredHardwareCodec class 1-to-1 callGroup call
    • var callVideoSend: Bool { get }
    • var callVideoReceive: Bool { get }
    • var conferenceVideoSend: Bool { get }
    • var conferenceVideoReceive: Bool { get }
    • init(callVideoSend: Bool, callVideoReceive: Bool, conferenceVideoSend: Bool, conferenceVideoReceive: Bool)
  • PlanetKitManager class 1-to-1 callGroup call
    • func getDeviceDefaultVideoCapability(usage: PlanetKitVideoCapabilityUsage) -> PlanetKitVideoCapability
    • func getVideoPreferredHardwareCodec() -> PlanetKitPreferredHardwareCodec
  • PlanetKitInitialSettingBuilder class 1-to-1 callGroup call
    • func withSetPreferredHardwareCodecKey(preferredHardwareCodec: PlanetKitPreferredHardwareCodec) -> PlanetKitInitialSettingBuilder
削除
  • PlanetKitCall class 1-to-1 call
    • var myVideoSendCapability: PlanetKitVideoCapability { get }
    • var myVideoReceiveCapability: PlanetKitVideoCapability { get }
  • PlanetKitConference class Group call
    • var myVideoSendCapability: PlanetKitVideoCapability { get }
    • var myVideoRecvPreferredHwCodec: Bool { get }
  • PlanetKitVideoCapability class 1-to-1 callGroup call
    • var preferredHwCodec: Bool
    • static var callSendDefault: PlanetKitVideoCapability
    • static var callReceiveDefault: PlanetKitVideoCapability
    • static var conferenceSendDefault: PlanetKitVideoCapability
  • PlanetKitJoinConferenceSettingBuilder extension Group call
    • func withMyVideoRecvPreferredHwCodecKey(enable: Bool) -> PlanetKitJoinConferenceSettingBuilder

マイグレーションガイド

PlanetKit初期化時のハードウェアコーデックの設定
  • 以前バージョン

    // Configure hardware codec for specific call/conference
    let callSettings = PlanetKitMakeCallSettingBuilder()
    .withVideoSendCapabilityKey(capability: capability)
    .build()

    let conferenceSettings = PlanetKitJoinConferenceSettingBuilder()
    .withMyVideoRecvPreferredHwCodecKey(enable: true)
    .build()
  • 新規バージョン

    // 1. Create hardware codec preferences
    let preferredHardwareCodec = PlanetKitPreferredHardwareCodec(
    callVideoSend: true,
    callVideoReceive: true,
    conferenceVideoSend: true,
    conferenceVideoReceive: true
    )

    // 2. Configure during initialization
    let initializeSettings = PlanetKitInitializeSettingsBuilder()
    .withSetPreferredHardwareCodecKey(preferredHardwareCodec: preferredHardwareCodec)
    .build()

    PlanetKitManager.shared.initialize(initialSettings: initializeSettings)
初期化後のハードウェアコーデック設定のアップデート
// 1. Create new hardware codec preferences
let preferredHardwareCodec = PlanetKitPreferredHardwareCodec(
callVideoSend: true,
callVideoReceive: true,
conferenceVideoSend: true,
conferenceVideoReceive: true
)

// 2. Update settings
let newSettings = PlanetKitInitializeSettingsBuilder()
.withSetPreferredHardwareCodecKey(preferredHardwareCodec: preferredHardwareCodec)
.build()

PlanetKitManager.shared.update(initialSettings: newSettings)
デバイスの基本的なビデオ性能のインポート
// Get default capability for call sending
let callSendCapability = PlanetKitManager.shared.getDeviceDefaultVideoCapability(usage: .callSend)

// Get default capability for conference receiving
let conferenceReceiveCapability = PlanetKitManager.shared.getDeviceDefaultVideoCapability(usage: .conferenceReceive)
現在のハードウェアコーデック設定のインポート
let hardwareCodecSettings = PlanetKitManager.shared.getVideoPreferredHardwareCodec()
let isHardwareEnabledForCallSend = hardwareCodecSettings.callVideoSend

グループ通話ピアのボリューム設定APIの改善

以前のサブグループ基盤のボリューム制御を個々のピアに対する統合ボリューム設定APIに置き換えました。

  • 6.0以前のバージョンではサブグループ別にボリュームを制御しましたが、6.0バージョンからはサブグループに関係なくボリュームを設定できます。
  • 上記の仕様変更により、関連APIを修正しました。

API

変更
  • PlanetKitConferencePeer class Group call

    以前バージョンPlanetKit 6.0
    func volumeLevelSetting(subgroupName: String?) throws -> PlanetKitVolumeLevelfunc volumeLevelSetting() throws -> PlanetKitVolumeLevel
追加
  • PlanetKitConferencePeerControl class Group call
    • func setVolumeLevelSetting(_ volumeLevel: Int8, completion: @escaping (Bool)->Void)
削除
  • PlanetKitSubgroupManager class Group call
    • func setPeerVolumeLevelSetting(_ volumeLevel: Int8, peerId: PlanetKitUserId, subgroupName: String?, allSubgroupsPeerSubscribed: Bool, completion: @escaping (Bool)->Void)

通話中のマイク使用有無によってマイクデバイスを制御

  • ミュートや通話一時停止など、通話中にマイクを使用しないときは、PlanetKitがマイクデバイスをオフにするように変更しました。
  • オーディオ管理システムを改善するため、関心の分離(separation of concerns)を強化するリファクタリングを行いました。
    • PlanetKitAudioSessionでは、コアのオーディオセッション機能をそのまま提供します。
    • PlanetKitAudioManagerで高レベルのオーディオ制御機能を提供します。

詳しくは、APIドキュメントを参照してください。

既知の問題

macOS 12および13では、通話がミュートになったり、一時停止中にもマイクインジケーターがオンになった状態が維持されます。 この状態で相手にオーディオデータが送信されることはありません。

API

変更
  • オーディオ管理システムのリファクタリング1-to-1 callGroup call

    • コアのオーディオセッション機能は、PlanetKitAudioSessionに移動
    • 高レベルのオーディオ制御機能は、PlanetKitAudioManagerで提供
  • PlanetKitAudioDeviceType enum 1-to-1 callGroup call

    以前バージョンPlanetKit 6.0
    case spkcase speaker
  • PlanetKitMakeCallSettingBuilder class 1-to-1 call

    以前バージョンPlanetKit 6.0
    func build() -> [String: Any]func build() throws -> [String: Any](iOSのみ該当)
  • PlanetKitVerifyCallSettingBuilder class 1-to-1 call

    以前バージョンPlanetKit 6.0
    func build() -> [String: Any]func build() throws -> [String: Any](iOSのみ該当)
  • PlanetKitJoinConferenceSettingBuilder class Group call

    以前バージョンPlanetKit 6.0
    func build() -> [String: Any]func build() throws -> [String: Any](iOSのみ該当)
追加
  • PlanetKitAudioManager class 1-to-1 callGroup call
    • static var shared: PlanetKitAudioManager { get }
    • var session: PlanetKitAudioSession { get }
    • func startMicPreview(_ preview: PlanetKitAudioMicPreviewDelegate, volumeInternal: TimeInterval = 1.0) -> Bool
    • func stopMicPreview()
    • func playFile(fileResourceUrl: URL, type: String, loopCount: Int32 = -1)
    • func playFile(fileResourceUrl: URL, type: String, loopCount: Int32, completion: @escaping (Bool) -> Void)
    • func playStop(type: String)
    • func setCustomMic(_ customMic: PlanetKitCustomMic)
    • func resetCustomMicToDefaultMic()
    • func setCustomSpeaker(_ customSpeaker: PlanetKitCustomSpeaker)
    • func resetCustomSpeakerToDefaultSpeaker()
    • func addVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for type: PlanetKitAudioDeviceType)
    • func removeVolumeDelegate(_ delegate: PlanetKitAudioVolumeDelegate, for type: PlanetKitAudioDeviceType)
    • var vpioEnabled: Bool { get set }
    • var defaultMicSampleRate: Float64 { get set }
    • var defaultSpeakerSampleRate: Float64 { get set }
    • var openSettings: PlanetKitAudioSessionSettings? { get set }
    • var closeSettings: PlanetKitAudioSessionSettings? { get set }
    • var defaultIOBufferDuration: Float64 { get set }
    • var micVolume: Float { get }
    • var speakerVolume: Float { get }
    • func setMicVolume(_ volume: Float)
    • func addAudioRouteChangeDelegate(_ delegate: PlanetKitAudioRouteChangeDelegate)
    • func removeAudioRouteChangeDelegate(_ delegate: PlanetKitAudioRouteChangeDelegate)
    • var isBluetoothInput: Bool { get }
    • var isBuiltInOutput: Bool { get }
    • var devices: [PlanetKitAudioDevice] { get }
    • func addDeviceChangeDelegate(_ delegate: PlanetKitAudioDeviceChangeDelegate)
    • func removeDeviceChangeDelegate(_ delegate: PlanetKitAudioDeviceChangeDelegate)
  • PlanetKitAudioSession class 1-to-1 callGroup call
    • var micEnabled: Bool { get }
    • var speakerEnabled: Bool { get }
    • var isStarted: Bool { get }
    • func addMicReceiver(_ micReceiver: PlanetKitAudioMicCaptureDelegate)
    • func removeMicReceiver(_ micReceiver: PlanetKitAudioMicCaptureDelegate)
    • var micModifier: PlanetKitAudioMicCaptureDelegate? { get set }
    • func addSpeakerReceiver(_ speakerReceiver: PlanetKitAudioSpkPlayDelegate)
    • func removeSpeakerReceiver(_ speakerReceiver: PlanetKitAudioSpkPlayDelegate)
    • var speakerModifier: PlanetKitAudioSpkPlayDelegate? { get set }
    • var speakerVolumeReceiver: PlanetKitAudioDeviceVolumeDelegate? { get set }
    • var speakerVolumeInterval: TimeInterval { get set }
    • func speakerOut(_ out: Bool)
    • var isSpeakerOut: Bool
    • var micDevice: PlanetKitAudioDevice? { get }
    • var speakerDevice: PlanetKitAudioDevice? { get }
    • var micVolume: Float { get }
    • var speakerVolume: Float { get }
    • func setVolume(_ volume: Float, for type: PlanetKitAudioDeviceType)
    • func change(micDevice: PlanetKitAudioDevice?, completion: @escaping (NSError?)->Void)
    • func change(speakerDevice: PlanetKitAudioDevice?, completion: @escaping (NSError?)->Void)
    • func setPreferredDefaultDevice(type: PlanetKitAudioDeviceType) throws
  • PlanetKitCustomMic class 1-to-1 callGroup call
    • func sendAudio(audioBuffer: PlanetKitAudioBuffer)
  • PlanetKitCustomSpeaker class 1-to-1 callGroup call
    • func playAudio(audioBuffer: PlanetKitAudioBuffer) -> Int32
  • PlanetKitAudioBuffer class 1-to-1 callGroup call
    • オーディオデータの保存および管理のためのプロパティ
    • オーディオバッファを作成するためのさまざまなイニシャライザー(initializer)
  • PlanetKitAudioMicPreviewDelegate protocol 1-to-1 callGroup call
    • func volumeDidUpdate(micVolume: Float)
削除
  • PlanetKitAudioMic class 1-to-1 callGroup call
  • PlanetKitAudioSpk class 1-to-1 callGroup call
  • PlanetKitAudioMicSpk class 1-to-1 callGroup call
  • PlanetKitAudioMicControllable protocol 1-to-1 callGroup call
  • PlanetKitAudioSpkControllable protocol 1-to-1 callGroup call
  • PlanetKitCall class 1-to-1 call
    • var audioManager: PlanetKitAudioManager { get }
    • weak var spkModifier: PlanetKitAudioSpkPlayDelegate? { get set }
    • weak var spkReceiver: PlanetKitAudioSpkPlayDelegate? { get set }
    • weak var micModifier: PlanetKitAudioMicCaptureDelegate? { get set }
    • weak var micReceiver: PlanetKitAudioMicCaptureDelegate? { get set }
  • PlanetKitConference class Group call
    • var audioManager: PlanetKitAudioManager { get }
    • weak var spkModifier: PlanetKitAudioSpkPlayDelegate? { get set }
    • weak var spkReceiver: PlanetKitAudioSpkPlayDelegate? { get set }
    • weak var micModifier: PlanetKitAudioMicCaptureDelegate? { get set }
    • weak var micReceiver: PlanetKitAudioMicCaptureDelegate? { get set }
  • PlanetKitMakeCallSettingBuilder class 1-to-1 call
    • func withCustomMicKey(mic: PlanetKitAudioMicControllable) -> PlanetKitMakeCallSettingBuilder
    • func withCustomSpkKey(spk: PlanetKitAudioSpkControllable) -> PlanetKitMakeCallSettingBuilder
  • PlanetKitVerifyCallSettingBuilder class 1-to-1 call
    • func withCustomMicKey(mic: PlanetKitAudioMicControllable) -> PlanetKitVerifyCallSettingBuilder
    • func withCustomSpkKey(spk: PlanetKitAudioSpkControllable) -> PlanetKitVerifyCallSettingBuilder
  • PlanetKitJoinConferenceSettingBuilder class Group call
    • func withCustomMicKey(mic: PlanetKitAudioMicControllable) -> PlanetKitJoinConferenceSettingBuilder
    • func withCustomSpkKey(spk: PlanetKitAudioSpkControllable) -> PlanetKitJoinConferenceSettingBuilder

サンプルコード

オーディオ設定でマイク/スピーカーデバイスのボリュームをプレビュー
class ViewController: UIViewController {
....
override func viewDidLoad() {
super.viewDidLoad()

let currentMicVolume = PlanetKitAudioManager.shared.session.micVolume
let currentSpeakerVolume = PlanetKitAudioManager.shared.session.speakerVolume
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

PlanetKitAudioManager.shared.addVolumeDelegate(self, for: .mic)
PlanetKitAudioManager.shared.addVolumeDelegate(self, for: .speaker)
PlanetKitAudioManager.shared.startMicPreview(self, volumeInternal: 0.1)
}

override func viewDidDisappear() {
super.viewDidDisappear()

PlanetKitAudioManager.shared.removeVolumeDelegate(self, for: .mic)
PlanetKitAudioManager.shared.removeVolumeDelegate(self, for: .speaker)
PlanetKitAudioManager.shared.stopMicPreview()
}
}

extension ViewController: PlanetKitAudioMicPreviewDelegate {
func volumeDidUpdate(micVolume: Float) {
DispatchQueue.main.async {
// TODO: Update mic volume level in the UI.
}
}
}

extension ViewController: PlanetKitAudioVolumeDelegate {
func didChangeVolume(_ type: PlanetKitAudioDeviceType, volume: Float) {
DispatchQueue.main.async {
// TODO: Update mic/speaker volume in the UI.
}
}
}
カスタムマイクを使用
class YourCustomMicManager {
....
func setCustomMic() {
var input = AudioFileInput(url: url, call: call)
PlanetKitAudioManager.shared.setCustomMic(input)
}

func resetMic(_ device: PlanetKitAudioDevice?) {
PlanetKitAudioManager.shared.resetCustomMicToDefaultMic()

guard device?.deviceID != PlanetKitAudioManager.shared.session.micDevice?.deviceID else {
return
}

PlanetKitAudioManager.shared.session.change(micDevice: device) { error in
if let error = error {
print(error)
}
}
}
}

// TODO: Implement your own custom mic.
class AudioFileInput: PlanetKitCustomMic {
init(url: URL, call: PlanetKitCall) {
....
}
}
(macOSのみ該当)マイク/スピーカーデバイスのリストを取得
....
private var micDevices = [PlanetKitAudioDevice]()
private var speakerDevices = [PlanetKitAudioDevice]()

func refreshDevices() {
micDevices.removeAll()
speakerDevices.removeAll()

let devices = PlanetKitAudioManager.shared.devices
for device in devices {
if device.isCapturable {
micDevices.append(device)
}
if device.isPlayable {
speakerDevices.append(device)
}
}
if let micDevice = PlanetKitAudioManager.shared.session.micDevice {
refreshCurrentDevice(micDevice, type: .mic)
}
if let speakerDevice = PlanetKitAudioManager.shared.session.speakerDevice {
refreshCurrentDevice(speakerDevice, type: .speaker)
}
}

func refreshCurrentDevice(_ device: PlanetKitAudioDevice?, type: PlanetKitAudioDeviceType) {
// TODO: Update the current audio device in the UI.
}
(macOSのみ該当)マイク/スピーカーデバイスの変更事項をモニタリング
class ViewController: UIViewController {
....
override func viewWillAppear() {
super.viewWillAppear()

PlanetKitAudioManager.shared.addDeviceChangeDelegate(self)
}

override func viewDidDisappear() {
super.viewDidDisappear()

PlanetKitAudioManager.shared.removeDeviceChangeDelegate(self)
}
}

extension ViewController: PlanetKitAudioDeviceChangeDelegate {
func didAudioDevicesUpdate(devices: [PlanetKitAudioDevice]) {
DispatchQueue.main.async {
self.refreshDevices()
}
}

func didAudioDeviceChange(device: PlanetKitAudioDevice?, type: PlanetKitAudioDeviceType) {
DispatchQueue.main.async {
// TODO: Update the currently selected audio device in the UI.
}
}
....
}
(macOSのみ該当)現在のマイク/スピーカーデバイスを変更
....
@IBAction func deviceChanged(_ sender: NSPopUpButton) {
if sender === micDevicesButton {
let device = micDevices[sender.indexOfSelectedItem]
PlanetKitAudioManager.shared.session.change(micDevice: device) { error in
if let error = error {
print(error)
}
}
}
else {
let device = speakerDevices[sender.indexOfSelectedItem]
PlanetKitAudioManager.shared.session.change(speakerDevice: device) { error in
if let error = error {
print(error)
}
}
}
}

カメラデバイスの切り替えAPI改善

カスタムカメラを使用する場合は、現在使用中のカメラデバイスから別のカメラデバイスに切り替えることはできません。この状況でエラーが発生するように関連APIを改善しました。

API

変更
  • PlanetKitCameraManager class 1-to-1 callGroup call

    以前バージョンPlanetKit 6.0
    func change(deviceInfo: PlanetKitVideoCaptureDeviceInfo)func change(deviceInfo: PlanetKitVideoCaptureDeviceInfo) throws

カスタムカメラのAPI名変更

カスタムカメラからデフォルトカメラに切り替える関数名を意味がより明確に伝わるように変更しました。

API

変更
  • PlanetKitCameraManager class 1-to-1 callGroup call

    以前バージョンPlanetKit 6.0
    func resetToDefaultCamera()func resetCustomCameraToDefaultCamera()

通話受信中にクラウド通話録音の有効化の可否確認機能を追加

  • PlanetKitCCParamに通話受信中にクラウド通話録音が有効になっているかどうかを確認できるフィールドを追加しました。

API

追加
  • PlanetKitCCParam class 1-to-1 call
    • var isRecordOnCloudEnabled: Bool

ビデオ通話を有効化時にレスポンスタイプの設定APIを除去

  • これで、1対1音声通話で相手がビデオ通話を有効にすると、ローカルユーザーのビデオは常に一時停止状態に設定されます。
    • 以前のバージョンでは、相手が音声通話をビデオ通話に切り替えるとき、ローカルユーザーのビデオ送信を自動的に開始するかどうかwithResponseOnEnableVideo()を使用して決定できました。
    • しかし、このAPIは個人情報保護の問題と潜在的な誤用の可能性があるため、バージョン6.0から削除し、PlanetKitCallDelegate.videoEnabledByPeerPlanetKitCallDelegate.videoEnabledByPeerAndMyVideoPausedに変更しました。
    • したがって、6.0 バージョンからは、相手がビデオ通話を有効にするとき、ローカルユーザーのビデオは一時停止された状態のままになります。
  • この変更により、以前PlanetKitResponseOnEnableVideo.sendを利用していたコードは、videoEnabledByPeerAndMyVideoPausedイベントを受信した後、手動でビデオを再生する方式にアップデートする必要があります。
    • 詳しくは、以下のサンプルコードを参照してください。

サンプルコード

  • 6.0バージョンで以前PlanetKitResponseOnEnableVideo.sendを使用して実装していた動作を再現するには、次のように実装します。
class CallDelegate: PlanetKitCallDelegate {
func videoEnabledByPeerAndMyVideoPaused(_ call: PlanetKitCall) {
// Your existing code...

// Add this to replicate PlanetKitResponseOnEnableVideo.send behavior
call.resumeMyVideo()
}
}

API

変更
  • PlanetKitCallDelegate protocol 1-to-1 call

    以前バージョンPlanetKit 6.0.0
    func videoEnabledByPeer(_ call: PlanetKitCall)func videoEnabledByPeerAndMyVideoPaused(_ call: PlanetKitCall)
削除
  • PlanetKitResponseOnEnableVideo enum 1-to-1 call
  • PlanetKitCall class 1-to-1 call
    • var responseOnEnableVideo: PlanetKitResponseOnEnableVideo { get }
  • PlanetKitMakeCallSettingBuilder class 1-to-1 call
    • func withResponseOnEnableVideo(response: PlanetKitResponseOnEnableVideo)
  • PlanetKitVerifyCallSettingBuilder class 1-to-1 call
    • func withResponseOnEnableVideo(response: PlanetKitResponseOnEnableVideo)

設定ビルダーでのエラー処理のためのPlanetKitSettingError追加

PlanetKitSettingError列挙型は、設定ビルダーに対する標準化されたエラー処理を提供します。

API

追加
  • PlanetKitSettingError enum 1-to-1 callGroup call

(iOS)通話設定作成時のPlanetKitCallKitSetting必須化

PlanetKit SDKはCallKit連動のために以下3つのオプションを提供します。

  • ユーザー定義のCallKit実装
  • PlanetKit内部のCallKit実装
  • CallKitを連動しない

今回のバージョンからiOSでは、通話を作成したり、通話を受信したり、グループ通話に参加したりするための設定を作成する際、PlanetKitCallKitSettingPlanetKitCallKitTypeと共に設定する必要があります。設定しない場合、PlanetKitMakeCallSettingBuilder.build()PlanetKitVerifyCallSettingBuilder.build()、または PlanetKitJoinConferenceSettingBuilder.build()で通話設定を作成する時にPlanetKitSettingError.callKitSettingNotSetエラーが発生します。

PlanetKitCallKitType.userまたは.planetkitに設定された場合、PlanetKitはマイクインジケーターの制御をCallKitに委任することに注意してください。

API

変更
  • PlanetKitMakeCallSettingBuilder class 1-to-1 call

    以前バージョンPlanetKit 6.0
    func build() -> [String: Any]func build() throws -> [String: Any](iOSのみ該当)
  • PlanetKitVerifyCallSettingBuilder class 1-to-1 call

    以前バージョンPlanetKit 6.0
    func build() -> [String: Any]func build() throws -> [String: Any](iOSのみ該当)
  • PlanetKitJoinConferenceSettingBuilder class Group call

    以前バージョンPlanetKit 6.0
    func build() -> [String: Any]func build() throws -> [String: Any](iOSのみ該当)

サンプルコード

PlanetKitCallKitTypeによってPlanetKitCallKitSetting作成
func createUserCallKitSetting() -> PlanetKitCallKitSetting {
// Select the appropriate CallKit integration option from the examples below

// Option 1: When integrating the user CallKit implementation
let callKitSetting = PlanetKitCallKitSetting(type: .user, param: nil)

// Option 2: When using PlanetKit internal CallKit implementation
let callkitParam = PlanetKitCallKitParam(
appName: "Example app",
callerName: "caller name",
isVideo: true,
ringtoneSound: nil,
icon: "example icon",
addCallToList: true,
supportsHolding: true
)
let callKitSetting = PlanetKitCallKitSetting(type: .planetkit, param: callkitParam)

// Option 3: When CallKit is not used in the app
let callKitSetting = PlanetKitCallKitSetting(type: .none, param: nil)

return callKitSetting
}