> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Actualización de la presencia de un usuario mediante XSAPI C

> Ejemplo de C plano que usa XblPresenceSetPresenceAsync para actualizar el estado de presencia en línea de un usuario de XBOX Live y anunciar la actividad actual dentro del juego.

Este tema proporciona código de ejemplo para establecer el estado de presencia en línea de un usuario. La presencia enriquecida de los servicios XBOX proporciona características para anunciar la actividad actual de un jugador a otros jugadores.

Para obtener más información, consulte [Información general de la presencia enriquecida](/services/xbox-services/community/presence/live-presence-overview).

## Actualización del estado de presencia en línea de un usuario

Este código de ejemplo establece el estado de presencia en línea de un usuario.

#### API de C plano

```cpp theme={null}
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();
}
```

Para obtener más información, consulte lo siguiente:

* [XAsyncBlock](/reference/system/xasync/structs/xasyncblock)
* [XAsyncGetStatus](/reference/system/xasync/functions/xasyncgetstatus)
* [XblPresenceSetPresenceAsync](/reference/live/xsapi-c/presence_c/functions/xblpresencesetpresenceasync)

## Actualización del estado de presencia enriquecida

#### API de C plano

```cpp theme={null}
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());
```

Para obtener más información, consulte lo siguiente:

* [XblPresenceRichPresenceIds](/reference/live/xsapi-c/presence_c/structs/xblpresencerichpresenceids)
* [XblPresenceSetPresenceAsync](/reference/live/xsapi-c/presence_c/functions/xblpresencesetpresenceasync)


## Related topics

- [Código de ejemplo de presencia enriquecida](/es/services/xbox-services/community/presence/how-to/live-presence-howto-nav.md)
- [Procedimientos](/es/services/xbox-services/community/presence/how-to/index.md)
- [Actualización de la presencia de un usuario mediante REST](/es/services/xbox-services/community/presence/how-to/live-updating-presence-rest.md)
- [Obtención de la presencia de un usuario](/es/services/xbox-services/community/presence/how-to/live-getting-a-users-presence.md)
- [Información general sobre la API XBOX Achievements Manager](/es/services/xbox-services/player-data/achievements/achievements-manager/live-achievements-manager-overview.md)
