グループ通話開始
PlanetKitを使用することで、1対1通話またはグループ通話のための音声およびビデオ通話機能をアプリに連携できます。このガイドでは、Flutterアプリでグループ音声通話の実装を開始する方法を説明します。
前提条件
- 使用しているシステムがシステム要件を満たしていることを確認してください。
- API keyを作成してください。詳しくは、開発環境を参照してください。
- アクセストークンを作成するアプリサーバーコードを実装してください。詳しくは、アクセストークン作成方法を参照してください。
プロジェクト作成
Set up an editorドキュメントを参考にして、プロジェクトを作成します。
SDKセットアップ
-
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} -
planet_kit_flutter
をアプリケーションのソースコードにインポートします。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
オブジェクトと共にPlanetKitManager
のinitializePlanetKit()
を使用して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);
}
- アプリで
initializePlanetKit()
メソッドを最初に1回は呼び出す必要があります。アプリのinitState()
メソッドでSDKを初期化するのが望ましいです。 - SDK初期化とログ設定についての詳細は、PlanetKit初期化およびログ設定を参照してください。
アクセストークン取得
クライアントアプリからアプリサーバーにアクセストークンの作成をリクエストしてください。
PlanetKitManager
のjoinConference()
を呼び出す度に新しいアクセストークンを受け取って使用する必要があります。
グループ音声通話の参加
グループ音声通話に参加するには、次の引数と共にPlanetKitManager
のjoinConference()
を呼び出します。
- 以下の属性を含む
PlanetKitJoinConferenceParam
オブジェクトmyUserId
:ローカルユーザーのユーザーIDroomId
:ルームIDmyServiceId
:ローカルユーザーのサービスIDroomServiceId
:ルームのサービスIDaccessToken
:アクセストークン
- イベントコールバックが実装された
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"));
ユーザーがクライアントアプリでグループ通話ルームに参加するには、部屋のIDが必要なため、アプリケーションで定義した通信チャンネルを通じてルームIDを他のユーザーと共有する必要があります。
次のステップ
以下のドキュメントを参照して、PlanetKitが提供するさまざまな機能と各機能の詳しい使い方を確認してください。