릴리스 노트
iOS/macOS용 PlanetKit 6.1의 릴리스 노트입니다.
PlanetKit 6.1.1
릴리스 일자: 2025-08-29
(macOS에만 해당) 오디오 볼륨 설정 기능의 버그 수정
입력 및 출력 채널을 모두 갖춘 외부 마이크 장치의 볼륨을 조정할 때 스피커 볼륨이 의도치 않게 변경되는 문제를 해결했습니다.
(macOS에만 해당) VPIO가 활성화될 때 발생할 수 있는 크래시 수정
macOS에서 오디오 프리뷰가 실행 중일 때 VPIO가 활성화되면 발생할 수 있는 크래시를 해결했습니다.
PlanetKit 버전 6.1.0에서는 다음과 같은 조건에서 VPIO가 활성화돼 문제가 발생할 수 있습니다.
- VPIO를 명시적으로 켜는 경우
- MLNS를 비활성화해 VPIO가 켜지는 경우
- 저사양 장치에서 MLNS가 자동으로 비활성화되어 VPIO가 켜지는 경우
PlanetKit 버전 6.1.0을 macOS에서 사용하면서 위 조건 중 하나라도 해당하는 상황이 발생할 수 있다면 업데이트가 필요합니다.
PlanetKit 6.1
릴리스 일자: 2025-08-08
사용자 유형 지원
- 애플리케이션에서 정의한 사용자 유형을 지원하여, 사용자 유형에 따라 앱의 동작이나 UI를 맞춤화할 수 있습니다 (예: 일반 사용자와 봇 사용자를 구별).
- 사용자 유형 값은 1부터 9999까지 설정할 수 있습니다.
- 10000 이상의 값은 LINE Planet에서 제공하는 에이전트에 예약되어 있습니다. 자세한 내용은 에이전트 통화를 참조하세요.
- 사용자 유형과 관련된 자세한 내용은 사용자 유형 설정을 참고하세요.
API
추가
PlanetKitJoinConferenceSettingBuilder
class Group callfunc withCustomUserTypeKey(customUserType: Int) throws -> PlanetKitJoinConferenceSettingBuilder
PlanetKitUserType
enum Group callPlanetKitUserTypeContainer
class Group callPlanetKitConferencePeer
class Group callvar userType: PlanetKitUserTypeContainer { get }
PlanetKitConference
class Group callvar myCustomUserType: Int? { get }
var myCustomUserTypeValue: NSNumber? { get }
예제 코드
-
1단계: 애플리케이션 사용자 유형을 정의하고 그룹 통화에 참여할 때 설정합니다.
enum AppUserType: Int {
case videoBot = 100
}
func joinConference(...) {
...
let settings = try! PlanetKitJoinConferenceSettingBuilder()
...
.withCustomUserTypeKey(userType: AppUserType.videoBot.rawValue)
.build()
let param = PlanetKitConferenceParam(myUserId: myUserId, roomId: roomId, roomServiceId: serviceId, displayName: displayName, delegate: manageable, accessToken: accessToken)
...
let result = PlanetKitManager.shared.joinConference(param: param, settings: settings)
...
} -
2단계: 각 사용자 유형에 따라 처리할 작업을 구현합니다.
extension ConferenceViewController: PlanetKitConferenceDelegate {
...
func peerListDidUpdate(_ conference: PlanetKitConference, updated: PlanetKitConferencePeerListUpdateParam) {
for peer in updated.addedPeers {
if peer.userType.customUserType == AppUserType.videoBot.rawValue {
print("Video bot has joined. ID: \(peer.id.uniqueId)")
}
}
for peer in updated.removedPeers {
if peer.userType.customUserType == AppUserType.videoBot.rawValue {
print("Video bot has left. ID: \(peer.id.uniqueId)")
}
}
}
}