그룹 통화 시작하기 (macOS)
PlanetKit을 사용하면 1대1 통화 또는 그룹 통화를 위한 음성 및 영상 통화 기능을 앱에 연동할 수 있습니다. 이 가이드에서는 macOS 앱에서 그룹 음성 통화 구현을 시작하는 방법을 설명합니다.
더욱 빠른 개발을 위해 빠른 시작을 기반으로 앱을 구현할 수 있습니다.
필수 조건
- 사용 중인 시스템이 시스템 요구사항을 충족하는지 확인하세요.
- API key를 생성하세요. 자세한 내용은 개발 환경을 참조하세요.
- 액세스 토큰을 생성하는 앱 서버 코드를 구현하세요. 자세한 내용은 액세스 토큰 생성 방법을 참조하세요.
- Xcode 14.1 이상을 설치하세요.
프로젝트 생성
Xcode를 열고 아래와 같이 새 프로젝트를 만드세요.
- [Welcome to Xcode] 창에서 [Create a new Xcode Project]를 클릭하세요.
- [macOS] 탭에서 [App]을 선택하고 [Next]를 클릭하세요.
- 프로젝트 생성 창에서 아래와 같이 설정하세요.
- [Product Name] 필드에 제품 이름을 입력하세요.
- [Team] 필드에서 개발 팀을 선택하세요.
- [Organization Identifier] 필드에 조직 식별자를 입력하세요.
- [Interface] 필드에서 [Storyboard]를 선택하세요.
- [Next]를 클릭하세요.
- 프로젝트가 생성될 위치를 선택하고 [Create]를 클릭하세요.
SDK 설치
Swift Package Manager를 통해 SDK를 설치하세요.
- Xcode 메뉴 바에서 [File] > [Add Packages...]를 선택하세요.
- [Search or Enter Package URL] 필드에 PlanetKit 저장소 URL(
https://github.com/line/planet-kit-apple
)을 입력하세요. - [Add Package] 버튼을 클릭하세요.
시스템 권한 요청
음성 통화 기능을 활성화하려면 사용자가 앱에 마이크 액세스 권한을 부여해야 합니다. 해당 절차가 진행되도록 다음과 같이 설정하세요.
-
NSMicrophoneUsageDescription
키를 앱의Info.plist
파일에 추가하세요. -
앱 타깃의 [Signing & Capabilities]에서 다음 App Sandbox 권한(entitlements)을 활성화하세요.
- [Network] 이하 Incoming Connections (Server) 및 Outgoing Connections (Client)
- [Hardware] 이하 Audio Input
SDK 초기화
PlanetKit API를 호출하려면 먼저 PlanetKit을 초기화해야 합니다. PlanetKitInitialSettingBuilder
객체와 함께 PlanetKitManager
의 initialize()
를 사용하여 PlanetKit을 초기화하세요.
initialize()
를 호출할 때 PlanetKitInitialSettingBuilder
객체에 서버 URL(planet_base_url
)을 설정해야 합니다. 사용 중인 개발 환경에 따라 적절한 planet_base_url
을 사용하세요.
// AppDelegate.swift
// Import PlanetKit SDK
import PlanetKit
PlanetKitManager.shared.initialize(initialSettings: PlanetKitInitialSettingBuilder()
.withSetKitServerKey(serverUrl: planet_base_url)
.build())
앱에서 initialize()
메서드를 최초에 한 번 호출해야 합니다. NSApplicationDelegate
를 채택하고 준수하는 AppDelegate
의 applicationDidFinishLaunching(_:)
메서드에서 SDK를 초기화하는 것이 좋습니다.
액세스 토큰 획득
클라이언트 앱에서 앱 서버에 액세스 토큰 생성을 요청해 받으세요.
joinConference()
를 호출할 때마다 새로운 액세스 토큰을 받아서 사용해야 합니다.
그룹 음성 통화 참여
그룹 음성 통화에 참여하려면 아래 속성을 포함하는 PlanetKitConferenceParam
개체와 함께 PlanetKitManager
의 joinConference()
를 호출하세요.
myUserId
: 로컬 사용자의 사용자 IDroomId
: 방 IDroomServiceId
: 방의 서비스 IDdelegate
:PlanetKitConferenceDelegate
를 채택하고 준수하는 이벤트 대리자(delegate)accessToken
: 액세스 토큰
import PlanetKit
class YourClass {
func joinConference() {
let param = PlanetKitConferenceParam(myUserId: myUserId, roomId: roomId, roomServiceId: serviceId, displayName: nil, delegate: self, accessToken: accessToken)
let result = PlanetKitManager.shared.joinConference(param: param, settings: nil)
if (result.reason == PlanetKitStartFailReason.none && result.conference != null) {
// The "result.conference" instance is the main instance to call APIs from now on.
// You must keep it to control this call.
}
else {
// Handle an error by referring to result.reason.
}
}
}
extension YourClass: PlanetKitConferenceDelegate {
func didConnect(_ conference: PlanetKitConference, connected: PlanetKitConferenceConnectedParam) {
// This is called when the call is connected.
// Write your own code here.
}
func didDisconnect(_ conference: PlanetKitConference, disconnected: PlanetKitDisconnectedParam) {
// This is called when the call is disconnected.
// Write your own code here.
}
func peerListDidUpdate(_ conference: PlanetKitConference, updated: PlanetKitConferencePeerListUpdateParam) {
// This is called when the list of peers is updated.
// Write your own code here.
}
}
사용자가 클라이언트 앱에서 그룹 통화 방에 입장하려면 방 ID가 필요하므로, 애플리케이션에서 정의한 통신 채널을 통해 방 ID를 다른 사용자와 공유해야 합니다.
다음 단계
아래 문서를 참조해 PlanetKit에서 제공하는 다양한 기능과 각 기능의 사용 방법을 자세히 살펴보세요.