본문으로 건너뛰기
Version: 7.0

짧은 데이터 전송

LINE Planet은 통신 중에 피어에게 제한된 크기의 데이터("짧은 데이터")를 보낼 수 있는 API를 제공합니다. 이 페이지에서는 통화 중에 짧은 데이터를 보내고 받는 방법을 설명합니다.

지원 통화 유형지원 SDK 버전
1대1 통화, 그룹 통화(컨퍼런스)모든 버전

공통 사항

통화 유형에 관계없이 짧은 데이터 전송에는 다음 사항이 적용됩니다.

크기 제한

짧은 데이터를 보내는 메서드는 데이터 자체와 함께 데이터 유형을 인자로 받습니다. 데이터 유형 및 데이터의 최대 크기는 다음과 같습니다.

  • 데이터 유형: 100바이트(null 종료 문자 포함)
  • 데이터: 800바이트

처리율 제한

초당 1회의 전송만 허용됩니다.

짧은 데이터 전송 결과 얻기

LINE Planet에서 여러 번 재시도한 후에도 데이터 전송이 실패하는 경우가 있습니다. 결과 핸들러 콜백을 사용하면 비동기적으로 데이터 전송 결과를 확인할 수 있습니다.

1대1 통화

1대1 통화에서는 다음과 같이 짧은 데이터를 보내고 받을 수 있습니다.

짧은 데이터 전송하기

통화 상대방에게 짧은 데이터를 전송하려면 PlanetKitCallsendShortData()를 사용하세요.

func sendShortDataExample(call: PlanetKitCall, type: String, data: String) {
guard let byteData = data.data(using: .utf8) else {
print("Failed to convert string to data")
return
}

call.sendShortData(type: type, data: byteData) { reason in
guard reason == .none else {
print("sendShortData failed: \(reason)")
return
}
print("sendShortData succeeded: type=\(type), data=\(data)")
}
}

수신한 짧은 데이터 처리하기

상대방은 PlanetKitCallDelegatedidReceiveShortData를 통해 짧은 데이터를 수신할 수 있습니다.

extension CallDelegateExample : PlanetKitCallDelegate {
...

func didReceiveShortData(_ call: PlanetKitCall, dataType: String, data: Data) {
// This is called when short data is received from the peer.
if let receivedData = String(data: data, encoding: .utf8) {
print("Received short data: type=\(dataType), data=\(receivedData)")
}
// Write your own code here to handle the received data.
}
}

그룹 통화

그룹 통화에서는 특정 피어 또는 모든 피어에게 짧은 데이터를 보낼 수 있습니다.

특정 피어에게 짧은 데이터 전송하기

특정 피어에게 짧은 데이터를 전송하려면 PlanetKitConferencesendShortData(peerId:type:data:completion:)를 사용하세요.

func sendShortDataToSpecificPeerExample(conference: PlanetKitConference, peerId: PlanetKitUserId, type: String, data: String) {
guard let byteData = data.data(using: .utf8) else {
print("Failed to convert string to data")
return
}

conference.sendShortData(peerId: peerId, type: type, data: byteData) { reason in
guard reason == .none else {
print("sendShortData failed: \(reason)")
return
}
print("sendShortData to \(peerId) succeeded: type=\(type), data=\(data)")
}
}

모든 피어에게 짧은 데이터 전송하기

모든 피어에게 짧은 데이터를 전송하려면 PlanetKitConferencesendShortData(type:data:completion:)를 사용하세요.

func sendShortDataToAllPeersExample(conference: PlanetKitConference, type: String, data: String) {
guard let byteData = data.data(using: .utf8) else {
print("Failed to convert string to data")
return
}

conference.sendShortData(type: type, data: byteData) { reason in
guard reason == .none else {
print("sendShortData failed: \(reason)")
return
}
print("sendShortData to all peers succeeded: type=\(type), data=\(data)")
}
}

수신한 짧은 데이터 처리하기

피어는 PlanetKitConferenceDelegatedidReceiveShortData를 통해 짧은 데이터를 수신할 수 있습니다.

extension ConferenceDelegateExample : PlanetKitConferenceDelegate {
...

func didReceiveShortData(_ conference: PlanetKitConference, senderId: PlanetKitUserId, dataType: String, data: Data) {
// This is called when short data is received from a peer in the conference.
if let receivedData = String(data: data, encoding: .utf8) {
print("Received short data from \(senderId): type=\(dataType), data=\(receivedData)")
}
// Write your own code here to handle the received data.
}
}

짧은 데이터 전송 실패 이유

결과 핸들러 콜백으로 전달되는 PlanetKitSendShortDataFailReason 열거형을 통해 짧은 데이터 전송 결과와 실패 이유를 확인할 수 있습니다. 가능한 실패 이유는 다음과 같습니다.

설명
none짧은 데이터가 성공적으로 전송되었습니다.
invalidParameter하나 이상의 입력 파라미터가 유효하지 않습니다(예: 데이터 크기가 0).
tooLongDataType데이터 타입이 허용된 최대 길이를 초과합니다(null 종료 문자 포함 100바이트 초과).
tooLongData데이터 페이로드가 허용된 최대 크기를 초과합니다(800바이트 초과).
tooFrequent짧은 데이터가 허용된 것보다 더 자주 전송되었습니다(처리율 제한 초과). 초당 1회의 전송만 허용됩니다.
timeout타임아웃으로 인해 전송이 실패했습니다.
internalError내부 오류로 인해 전송이 실패했습니다.

관련 API

짧은 데이터 전송과 관련된 API는 다음과 같습니다.

공통

열거형

1대1 통화

메서드

이벤트

그룹 통화

메서드

이벤트