> ## 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.

# Atualizando a presença de um usuário via XSAPI C

> Exemplo em C simples que usa XblPresenceSetPresenceAsync para atualizar o status de presença online de um usuário do XBOX Live e divulgar a atividade atual no jogo.

Este tópico fornece um código de exemplo para definir o status de presença online de um usuário. O Rich Presence dos serviços do XBOX oferece recursos para divulgar a atividade atual de um jogador para outros jogadores.

Para obter mais informações, consulte a [visão geral do Rich Presence](/pt-BR/services/xbox-services/community/presence/live-presence-overview).

## Atualizando o status de presença online de um usuário

Este código de exemplo define o status de presença online de um usuário.

#### API C simples

```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 obter mais informações, consulte:

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

## Atualizando o status de Rich Presence

#### API C simples

```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 obter mais informações, consulte:

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


## Related topics

- [Código de exemplo do Rich Presence](/pt-BR/services/xbox-services/community/presence/how-to/live-presence-howto-nav.md)
- [Instruções](/pt-BR/services/xbox-services/community/presence/how-to/index.md)
- [Atualizando a presença de um usuário via REST](/pt-BR/services/xbox-services/community/presence/how-to/live-updating-presence-rest.md)
- [Obtendo a presença de um usuário](/pt-BR/services/xbox-services/community/presence/how-to/live-getting-a-users-presence.md)
- [Visão geral da API Achievements Manager do XBOX](/pt-BR/services/xbox-services/player-data/achievements/achievements-manager/live-achievements-manager-overview.md)
