短いデータ送信
LINE Planetは、通信中に限られたサイズのデータ(「短いデータ」)をピアに送信できるAPIを提供します。このページでは、通話中に短いデータを送受信する方法について説明します。
| 対応する通話タイプ | 対応するSDKバージョン |
|---|---|
| 1対1通話、グループ通話(カンファレンス) | すべてのバージョン |
共通事項
通話タイプに関係なく、短いデータの送信には以下の事項を適用します。
サイズの制限
短いデータを送信するメソッドは、データ自体と、データタイプを引数として受け取ります。データタイプおよびデータの最大サイズは次のとおりです。
- データタイプ:100バイト(null終端文字を含む)
- データ:800バイト
レート制限
1秒あたり1回の送信のみ許容されます。
短いデータの送信結果を得る
LINE Planetで何度も再試行した後もデータ送信に失敗する場合があります。結果ハンドラーコールバックを使用すると、非同期でデータ送信結果を確認できます。
1対1通話
1対1通話では、次のように短いデータを送受信できます。
短いデータを送信する
通話相手に短いデータを送信するには、PlanetKitCallのsendShortData()を使用します。
fun sendShortDataExample(call: PlanetKitCall, type: String, data: String) {
val byteArray = data.toByteArray(Charsets.UTF_8)
call.sendShortData(type, byteArray, object : PlanetKitSendShortDataResultCallback {
override fun onResult(isSuccess: Boolean, failReason: PlanetKitSendShortDataFailReason, userdata: Any?) {
if (isSuccess) {
Log.d(TAG, "sendShortData succeeded: type=$type, data=$data")
} else {
Log.e(TAG, "sendShortData failed: $failReason")
}
}
})
}
受信した短いデータを処理する
相手はCallListenerのonShortDataReceivedを使用して短いデータを受信できます。
// Implement related callbacks of the CallListener interface
// MakeCallListener for caller and AcceptCallListener for callee
private val makeAcceptCallListener = object : MakeCallListener, AcceptCallListener {
...
override fun onShortDataReceived(call: PlanetKitCall, shortData: PlanetKitShortData) {
// This is called when short data is received from the peer.
val receivedData = String(shortData.data, Charsets.UTF_8)
Log.d(TAG, "Received short data: type=${shortData.type}, data=$receivedData")
// Write your own code here to handle the received data.
}
}
グループ通話
グループ通話では、特定のピアまたはすべてのピアに短いデータを送信できます。
特定のピアに短いデータを送信する
特定のピアに短いデータを送信するには、PlanetKitConferenceのsendShortData(PlanetKitUser, String, ByteArray, Any?, PlanetKitSendShortDataResultCallback?)を使用します。
fun sendShortDataToSpecificPeerExample(conference: PlanetKitConference, targetUser: PlanetKitUser, type: String, data: String) {
val byteArray = data.toByteArray(Charsets.UTF_8)
conference.sendShortData(targetUser, type, byteArray, object : PlanetKitSendShortDataResultCallback {
override fun onResult(isSuccess: Boolean, failReason: PlanetKitSendShortDataFailReason, userdata: Any?) {
if (isSuccess) {
Log.d(TAG, "sendShortData to ${targetUser.serviceId}@${targetUser.userId} succeeded: type=$type, data=$data")
} else {
Log.e(TAG, "sendShortData failed: $failReason")
}
}
})
}
すべてのピアに短いデータを送信する
すべてのピアに短いデータを送信するには、PlanetKitConferenceのsendShortData(String, ByteArray, Any?, PlanetKitSendShortDataResultCallback?)を使用します。
fun sendShortDataToAllPeersExample(conference: PlanetKitConference, type: String, data: String) {
val byteArray = data.toByteArray(Charsets.UTF_8)
conference.sendShortData(type, byteArray, object : PlanetKitSendShortDataResultCallback {
override fun onResult(isSuccess: Boolean, failReason: PlanetKitSendShortDataFailReason, userdata: Any?) {
if (isSuccess) {
Log.d(TAG, "sendShortData to all peers succeeded: type=$type, data=$data")
} else {
Log.e(TAG, "sendShortData failed: $failReason")
}
}
})
}
受信した短いデータを処理する
ピアはConferenceListenerのonShortDataReceivedを通じて短いデータを受信できます。
// Implement related callbacks of the ConferenceListener interface
private val conferenceListener = object : ConferenceListener {
...
override fun onShortDataReceived(conference: PlanetKitConference, sender: PlanetKitUser, shortData: PlanetKitShortData) {
// This is called when short data is received from a peer in the conference.
val receivedData = String(shortData.data, Charsets.UTF_8)
Log.d(TAG, "Received short data from ${sender.serviceId}@${sender.userId}: type=${shortData.type}, data=$receivedData")
// Write your own code here to handle the received data.
}
}
短いデータ送信の失敗理由
結果ハンドラーのコールバックとして渡されるPlanetKitSendShortDataFailReason列挙型を通じて、短いデータ送信の結果と失敗理由を確認できます。考えられる失敗の理由は次のとおりです。
| 値 | 説明 |
|---|---|
NONE | 短いデータが正常に送信されました。 |
INVALID_PARAMETER | 1つ以上の入力パラメーターが無効です(例:データサイズが0)。 |
TOO_LONG_DATA_TYPE | データタイプが許容された最大長さを超えています(null終了文字を含めて100バイトを超過)。 |
TOO_LONG_DATA | データペイロードが許容された最大サイズを超えています(800バイトを超過)。 |
TOO_FREQUENT | 短いデータが許容回数を超えて送信されました(レート制限を超過)。1秒あたり1回の送信のみ許容されます。 |
TIMEOUT | タイムアウトにより送信が失敗しました。 |
関連API
短いデータの送信に関連するAPIは、以下のとおりです。