グループ通話を始める(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権限を有効にします。
- 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
を採用し遵守するイベントデリゲート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が提供するさまざまな機能と各機能の詳細については、以下のドキュメントを参照してください。