Implement your first group call
PlanetKit lets you integrate audio and video call functionality for 1-to-1 calls or group calls into your app. This guide shows how to get started with the implementation of a group audio call in your Flutter app.
Prerequisites
- Make sure that your system meets the system requirements.
- Create an API key. For more information, see Development environment.
- Implement app server code to generate an access token. For more information, see How to generate access tokens.
Create a project
Create a project by referring to Set up an editor.
Install the SDK
-
In
pubspec.yaml
, add the following lines. Replace{PLANET_KIT_VERSION}
with the SDK version to use (for example,v1.0.0
).dependencies:
flutter:
sdk: flutter
planet_kit_flutter:
git:
url: git@github.com:line/planet-kit-flutter.git
ref: {PLANET_KIT_VERSION} -
Import
planet_kit_flutter
to application source code.import 'package:planet_kit_flutter/planet_kit_flutter.dart';
Request system permissions
Use Dart permission_handler package to request phone, microphone, and Bluetooth connection permission.
import 'package:permission_handler/permission_handler.dart';
final status = await [Permission.microphone, Permission.phone, Permission.bluetoothConnect].request();
Initialize the SDK
To call the PlanetKit APIs, you must initialize PlanetKit first. Initialize PlanetKit using initializePlanetKit()
of PlanetKitManager
with a PlanetKitInitParam
object.
You must set the server URL in the PlanetKitInitParam
object before calling initializePlanetKit()
. Make sure that you use an appropriate planet_base_url
depending on the development environment that you're using.
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);
}
- The
initializePlanetKit()
method must be called once initially in your app. It is recommended to initialize the SDK in theinitState()
method of your app. - For more information on SDK initialization and log setting, see PlanetKit initialization and log setting.
Get the access token
In the client app, request your app server to generate an access token and get the generated access token.
You must get a new access token and use it each time you call joinConference()
of PlanetKitManager
.
Join a group audio call
To join a group audio call, call joinConference()
of PlanetKitManager
with the following arguments:
PlanetKitJoinConferenceParam
object, which includes the following properties:myUserId
: Local user's user IDroomId
: Room IDmyServiceId
: Local user's service IDroomServiceId
: Room service IDaccessToken
: Access token
PlanetKitConferenceEventHandler
object, which includes the implementation of event callbacks
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"));
Users need the room ID to enter the room from the client app, so the room ID must be shared with other users through an application-defined communication channel.
Next steps
See the following documents to learn more about the various features provided by PlanetKit and how to use each feature.
- Call flow: Familiarize yourself with the call flow for each call type.
- Extended functions: Explore the guides on extended functions, such as mute control and screen share.
- Code examples: See the code examples that you can use for implementing your own app.
- Reference: Refer to the API reference, API changelog, and release notes.