次の方法で共有


XSAPI C を通じてユーザーのプレゼンスを更新する

このトピックでは、ユーザーのオンライン プレゼンスの状態を設定するためのサンプル コードを提供します。 Xbox サービス リッチ プレゼンスでは、プレイヤーの現在のアクティビティを他のプレイヤーに広く知ってもらうための機能が提供されます。

詳細については、「リッチ プレゼンスの概要」を参照してください。

ユーザーのオンライン プレゼンス状態を更新する

このサンプル コードは、ユーザーのオンライン プレゼンスの状態を設定します。

フラット C API

auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = queue;
asyncBlock->context = nullptr;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // Take over ownership of XAsyncBlock*.
    HRESULT hr = XAsyncGetStatus(asyncBlock, false);
};

HRESULT hr = XblPresenceSetPresenceAsync(xboxLiveContext, true, nullptr, asyncBlock.get());
if (SUCCEEDED(hr))
{
    // The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* because the callback will take over ownership.
    // If the call fails, std::unique_ptr will keep ownership and delete XAsyncBlock*.
    asyncBlock.release();
}

詳細については、以下を参照してください。

リッチ プレゼンス状態を更新する

フラット C API

XblPresenceRichPresenceIds ids{};
pal::strcpy(ids.scid, sizeof(ids.scid), scid);
ids.presenceId = "playingMap";
std::vector<const char*> tokenIds{ "CurrentMap" };
ids.presenceTokenIds = tokenIds.data();
ids.presenceTokenIdsCount = tokenIds.size();

HRESULT hr = XblPresenceSetPresenceAsync(xboxLiveContext, true, &ids, asyncBlock.get());

詳細については、以下を参照してください。