짧은 데이터 전송
LINE Planet은 통신 중에 피어에게 제한된 크기의 데이터("짧은 데이터")를 보낼 수 있는 API를 제공합니다. 이 페이지에서는 통화 중에 짧은 데이터를 보내고 받는 방법을 설명합니다.
| 지원 통화 유형 | 지원 SDK 버전 |
|---|---|
| 1대1 통화, 그룹 통화(컨퍼런스) | 모든 버전 |
공통 사항
통화 유형에 관계없이 짧은 데이터 전송에는 다음 사항이 적용됩니다.
크기 제한
짧은 데이터를 보내는 메서드는 데이터 자체와 함께 데이터 유형을 인자로 받습니다. 데이터 유형 및 데이터의 최대 크기는 다음과 같습니다.
- 데이터 유형: 100바이트(null 종료 문자 포함)
- 데이터: 800바이트
처리율 제한
초당 1회의 전송만 허용됩니다.
짧은 데이터 전송 결과 얻기
LINE Planet에서 여러 번 재시도한 후에도 데이터 전송이 실패하는 경우가 있습니다. 결과 핸들러 콜백을 사용하면 비동기적으로 데이터 전송 결과를 확인할 수 있습니다.
1대1 통화
1대1 통화에서는 다음과 같이 짧은 데이터를 보내고 받을 수 있습니다.
짧은 데이터 전송하기
통화 상대방에게 짧은 데이터를 전송하려면 PlanetKitCall의 sendShortData()를 사용하세요.
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)")
}
}
수신한 짧은 데이터 처리하기
상대방은 PlanetKitCallDelegate의 didReceiveShortData를 통해 짧은 데이터를 수신할 수 있습니다.
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.
}
}
그룹 통화
그룹 통화에서는 특정 피어 또는 모든 피어에게 짧은 데이터를 보낼 수 있습니다.
특정 피어에게 짧은 데이터 전송하기
특정 피어에게 짧은 데이터를 전송하려면 PlanetKitConference의 sendShortData(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)")
}
}
모든 피어에게 짧은 데이터 전송하기
모든 피어에게 짧은 데이터를 전송하려면 PlanetKitConference의 sendShortData(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)")
}
}
수신한 짧은 데이터 처리하기
피어는 PlanetKitConferenceDelegate의 didReceiveShortData를 통해 짧은 데이터를 수신할 수 있습니다.
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 통화
메서드
이벤트
그룹 통화
메서드
-
PlanetKitConference의sendShortData(type:data:completion:),PlanetKitConference의sendShortData(peerId:type:data:completion:)