本文にスキップする
Version: 7.0

短いデータ送信

LINE Planetは、通信中に限られたサイズのデータ(「短いデータ」)をピアに送信できるAPIを提供します。このページでは、通話中に短いデータを送受信する方法について説明します。

対応する通話タイプ対応するSDKバージョン
1対1通話、グループ通話(カンファレンス)すべてのバージョン

共通事項

通話タイプに関係なく、短いデータの送信には以下の事項を適用します。

サイズの制限

短いデータを送信するメソッドは、データ自体と、データタイプを引数として受け取ります。データタイプおよびデータの最大サイズは次のとおりです。

  • データタイプ:100バイト(null終端文字を含む)
  • データ:800バイト

レート制限

1秒あたり1回の送信のみ許容されます。

短いデータの送信結果を得る

LINE Planetで何度も再試行した後もデータ送信に失敗する場合があります。結果ハンドラーコールバックを使用すると、非同期でデータ送信結果を確認できます。

1対1通話

1対1通話では、次のように短いデータを送受信できます。

短いデータを送信する

通話相手に短いデータを送信するには、PlanetKitCall::SendShortData()を使用します。

void SendShortDataExample(PlanetKit::PlanetKitCallPtr pCall, const std::wstring& wstrType, const std::string& strData)
{
pCall->SendShortData(wstrType.c_str(), (void*)strData.c_str(), (unsigned int)strData.size(), nullptr, [](void*, bool bSuccess, PlanetKit::ESendShortDataFailReason eReason) {
if (bSuccess) {
std::wcout << L"SendShortData succeeded" << std::endl;
} else {
std::wcout << L"SendShortData failed: " << (int)eReason << std::endl;
}
});
}

受信した短いデータを処理する

相手はICallEvent::OnReceivedShortDataを使用して短いデータを受信できます。

class CallEventListener : public PlanetKit::ICallEvent {
public:
...

void OnReceivedShortData(PlanetKit::PlanetKitCallPtr pPlanetKitCall, PlanetKit::ShortDataParamPtr pShortDataParam) override {
// This is called when short data is received from the peer.
const wchar_t* pType = pShortDataParam->GetType();
const void* pData = pShortDataParam->GetData();
unsigned int nSize = pShortDataParam->GetSize();

std::string receivedData((const char*)pData, nSize);
std::wcout << L"Received short data: type=" << pType << L", data=";
std::cout << receivedData.c_str() << std::endl;
// Write your own code here to handle the received data.
}
}

グループ通話

グループ通話では、特定のピアまたはすべてのピアに短いデータを送信できます。

特定のピアに短いデータを送信する

特定のピアに短いデータを送信するには、PlanetKitConference::SendShortData()を使用します。

void SendShortDataToSpecificPeerExample(PlanetKit::PlanetKitConferencePtr pConference, PlanetKit::UserIdPtr pPeerId, const std::wstring& wstrType, const std::string& strData)
{
pConference->SendShortData(wstrType.c_str(), (void*)strData.c_str(), (unsigned int)strData.size(), pPeerId, nullptr, [](void*, bool bSuccess, PlanetKit::ESendShortDataFailReason eReason) {
if (bSuccess) {
std::wcout << L"SendShortData to specific peer succeeded" << std::endl;
} else {
std::wcout << L"SendShortData failed: " << (int)eReason << std::endl;
}
});
}

すべてのピアに短いデータを送信する

すべてのピアに短いデータを送信するには、PlanetKitConference::SendShortDataToAllPeers()を使用します。

void SendShortDataToAllPeersExample(PlanetKit::PlanetKitConferencePtr pConference, const std::wstring& wstrType, const std::string& strData)
{
pConference->SendShortDataToAllPeers(wstrType.c_str(), (void*)strData.c_str(), (unsigned int)strData.size(), nullptr, [](void*, bool bSuccess, PlanetKit::ESendShortDataFailReason eReason) {
if (bSuccess) {
std::wcout << L"SendShortData to all peers succeeded" << std::endl;
} else {
std::wcout << L"SendShortData failed: " << (int)eReason << std::endl;
}
});
}

受信した短いデータを処理する

ピアはIConferenceEvent::OnReceivedShortDataを通じて短いデータを受信できます。

class ConferenceEventListener : public PlanetKit::IConferenceEvent {
public:
...

void OnReceivedShortData(PlanetKit::PlanetKitConferencePtr pPlanetKitConference, PlanetKit::ShortDataParamPtr pParam) override {
// This is called when short data is received from a peer in the conference.
PlanetKit::UserIdPtr pSenderId = pParam->GetPeerID();
const wchar_t* pType = pParam->GetType();
const void* pData = pParam->GetData();
unsigned int nSize = pParam->GetSize();

std::string receivedData((const char*)pData, nSize);
std::wcout << L"Received short data from peer: type=" << pType << L", data=";
std::cout << receivedData.c_str() << std::endl;
// Write your own code here to handle the received data.
}
}

短いデータ送信の失敗理由

結果ハンドラーのコールバックとして渡されるESendShortDataFailReason列挙型を通じて、短いデータ送信の結果と失敗理由を確認できます。考えられる失敗の理由は次のとおりです。

説明
PLNK_SEND_SHORT_DATA_FAIL_REASON_NONE短いデータが正常に送信されました。
PLNK_SEND_SHORT_DATA_FAIL_REASON_INVALID_PARAMETER1つ以上の入力パラメーターが無効です(例:データサイズが0であるか、データポインタがnull)。
PLNK_SEND_SHORT_DATA_FAIL_REASON_TOO_LONG_DATA_TYPEデータタイプが許容された最大長さを超えています(null終了文字を含めて100バイトを超過)。
PLNK_SEND_SHORT_DATA_FAIL_REASON_TOO_LONG_DATAデータペイロードが許容された最大サイズを超えています(800バイトを超過)。
PLNK_SEND_SHORT_DATA_FAIL_REASON_TOO_FREQUENT短いデータが許容回数を超えて送信されました(レート制限を超過)。1秒あたり1回の送信のみ許容されます。
PLNK_SEND_SHORT_DATA_FAIL_REASON_TIMEOUTタイムアウトにより送信が失敗しました。

関連API

短いデータの送信に関連するAPIは、以下のとおりです。

共通

列挙型

1対1通話

メソッド

イベント

グループ通話

メソッド

イベント