본문으로 건너뛰기
Version: 1.0

그룹 통화 시작하기

PlanetKit을 사용하면 1대1 통화 또는 그룹 통화를 위한 음성 및 영상 통화 기능을 앱에 연동할 수 있습니다. 이 가이드에서는 Flutter 앱에서 그룹 음성 통화 구현을 시작하는 방법을 설명합니다.

필수 조건

프로젝트 생성

Set up an editor 문서를 참고하여 프로젝트를 생성하세요.

SDK 설치

  1. pubspec.yaml에 다음 코드를 추가하세요. 추가할 때 {PLANET_KIT_VERSION}은 사용하고자 하는 SDK 버전(예: v1.0.0)으로 바꾸세요.

    dependencies:
    flutter:
    sdk: flutter

    planet_kit_flutter:
    git:
    url: git@github.com:line/planet-kit-flutter.git
    ref: {PLANET_KIT_VERSION}
  2. planet_kit_flutter를 애플리케이션 소스 코드로 import 하세요.

    import 'package:planet_kit_flutter/planet_kit_flutter.dart';

시스템 권한 요청

Dart permission_handler 패키지를 사용하여 전화, 마이크, Bluetooth 연결 권한을 요청하세요.

import 'package:permission_handler/permission_handler.dart';
final status = await [Permission.microphone, Permission.phone, Permission.bluetoothConnect].request();

SDK 초기화

PlanetKit API를 호출하려면 먼저 PlanetKit을 초기화해야 합니다. PlanetKitInitParam 객체와 함께 PlanetKitManagerinitializePlanetKit()를 사용해 PlanetKit을 초기화하세요.

PlanetKit.initializePlanetKit()를 호출하기 전에 PlanetKitInitParam 객체에 서버 URL을 설정해야 합니다. 사용 중인 개발 환경에 따라 적절한 planet_base_url을 사용하세요.

Future<void> initializePlanetKit() async {
final serverUrl = "SERVER_URL";
final initParam = PlanetKitInitParam(
logSetting: PlanetKitLogSetting(
enabled: false,
logLevel: PlanetKitLogLevel.silent,
logSizeLimit: PlanetKitLogSizeLimit.small),
serverUrl: serverUrl);
final result =
await PlanetKitManager.instance.initializePlanetKit(initParam);
}
Note
  • 앱에서 initializePlanetKit() 메서드를 최초에 한 번 호출해야 합니다. 앱의 initState() 메서드에서 SDK를 초기화하는 것이 좋습니다.
  • SDK 초기화와 로그 설정에 대한 자세한 정보는 PlanetKit 초기화 및 로그 설정을 참조하세요.

액세스 토큰 획득

클라이언트 앱에서 앱 서버에 액세스 토큰 생성을 요청해 받으세요.

Note

PlanetKitManagerjoinConference()를 호출할 때마다 새로운 액세스 토큰을 받아서 사용해야 합니다.

그룹 음성 통화 참여

그룹 음성 통화에 참여하려면 다음 인자와 함께 PlanetKitManagerjoinConference()를 호출하세요.

  • 아래 속성을 포함하는 PlanetKitJoinConferenceParam 객체
    • myUserId: 로컬 사용자의 사용자 ID
    • roomId: 방 ID
    • myServiceId: 로컬 사용자의 서비스 ID
    • roomServiceId: 방의 서비스 ID
    • accessToken: 액세스 토큰
  • 이벤트 콜백이 구현된 PlanetKitConferenceEventHandler 객체
Future<bool> joinConference(String roomId, String accessToken) async {
var builder = PlanetKitJoinConferenceParamBuilder()
.setMyUserId(myUserId)
.setMyServiceId(myServiceId)
.setRoomServiceId(roomServiceId)
.setRoomId(roomId)
.setAccessToken(accessToken);

PlanetKitJoinConferenceParam? param;
try {
param = builder.build();
} catch (error) {
print("failed to build join conference param $error");
return false;
}
final result =
await PlanetKitManager.instance.joinConference(param, _eventHandler);

if (result.reason != PlanetKitStartFailReason.none) {
print("join conference result ${result.reason}");
return false;
}

// The "result.conference" instance is the main instance to call APIs from now on.
// You must keep it to control this call.
return true;
}

final _eventHandler = PlanetKitConferenceEventHandler(
onConnected: (conference) => print("connected"),
onDisconnected: (conference, reason, source, byRemote) => print("disconnected $reason"),
onPeerListUpdated: (conference, updateParam) => print("peer list updated $updateParam"));
Note

사용자가 클라이언트 앱에서 그룹 통화 방에 입장하려면 방 ID가 필요하므로, 애플리케이션에서 정의한 통신 채널을 통해 방 ID를 다른 사용자와 공유해야 합니다.

다음 단계

아래 문서를 참조해 PlanetKit에서 제공하는 다양한 기능과 각 기능의 사용 방법을 자세히 살펴보세요.

  • 통화 흐름: 통화 유형별 통화 흐름을 살펴보세요.
  • 확장 기능: 음 소거 제어, 화면 공유 등 다양한 확장 기능을 살펴보세요.
  • 예제 코드: 앱을 구현하는 데 참고할 수 있는 예제 코드를 확인하세요.
  • 참조 문서: API 레퍼런스, API 변경 내역, 릴리스 노트를 확인하세요.