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

# Implementando avaliações para o seu jogo

> Opções de avaliação disponíveis na Microsoft Store para títulos do GDK: configuração de avaliações gratuitas limitadas por uso no Partner Center e implementação de verificações de avaliação no jogo.

Você pode configurar vários tipos diferentes de avaliações gratuitas para o seu jogo:

* *Avaliações gratuitas por tempo limitado* - Essas avaliações expiram após um determinado período de tempo de *calendário* (por exemplo, sete dias após o usuário baixar a avaliação, independentemente de quanto tempo ele a usa).
* *Avaliações gratuitas limitadas por uso* - Permitem configurar o jogo para que o usuário o execute por um determinado período de *tempo de execução do jogo* e, em seguida, exigem que o usuário compre o jogo para continuar usando-o.
* *Avaliações selecionadas* - Essas avaliações não têm expiração nem limites de tempo de execução do jogo, mas o jogo pode limitar o que é jogável. Semelhante a uma demonstração, mas é necessário baixar o jogo inteiro.

<Note>
  As avaliações baseadas em tempo e em uso devem ser oferecidas uma vez por título por usuário e não devem ser misturadas com outras ofertas de avaliação. Os direitos de avaliação expirados ou esgotados permanecem na conta do usuário e impedem a aquisição de quaisquer ofertas de avaliação extras para o mesmo jogo. O tipo de avaliação não pode ser alterado ou redefinido depois que uma avaliação é adquirida por um cliente.
</Note>

<Note>
  Algumas avaliações são gratuitas, mas são limitadas a usuários que possuem assinaturas específicas.
</Note>

Este artigo também se aplica a essas avaliações.

<Note>
  Os jogos executados como parte de ofertas de **Dias de Jogo Grátis** não são executados como avaliações reais, mas só podem ser iniciados por licenças completas temporárias.
</Note>

A configuração de avaliação e as estruturas relacionadas não se aplicam.

## Configurando uma avaliação limitada por uso no Partner Center

<Note>
  Você só pode acessar esse recurso se tiver as permissões adequadas e se o seu jogo usar [licenciamento restritivo](/pt-BR/publishing/xstore-commerce/xstore-open-restrictive-licensing).
</Note>

Para obter detalhes, entre em contato com seu gerente de conta da Microsoft.

Você pode configurar avaliações gratuitas limitadas por uso no Partner Center sem alterar o código do jogo. No entanto, você precisa adicionar código nos seguintes cenários:

* Restringir o acesso à avaliação somente ao usuário que adquiriu a avaliação na loja.
* Salvar o estado do jogo entre as sessões de jogo e transferir o progresso do usuário da avaliação para o jogo completo depois da compra.

1. Na página **Submission overview**, acesse a página **Pricing and availability**.
2. Em **Free trial**, abra o menu suspenso e selecione **Usage-limited**.
3. No segundo menu suspenso exibido, selecione o tempo máximo durante o qual os usuários podem usar seu aplicativo.
4. Selecione **Save**.

Depois de publicar seu jogo na Microsoft Store, você verá as informações da avaliação na página do produto do jogo.

## Restringir o acesso somente aos usuários que adquiriram a avaliação

Em alguns casos, talvez você queira permitir que somente os proprietários da avaliação executem o jogo. Essa limitação é importante para uma avaliação limitada por uso, pois você não quer que outra pessoa esgote o tempo de avaliação de outra conta. Você pode implementar essa funcionalidade verificando a propriedade [XStoreGameLicense](/pt-BR/reference/system/xstore/xstore_members)`.isTrialOwnedByThisUser`. Se ela for `false`, impeça o jogador atual de prosseguir e informe o usuário para obter sua própria licença de avaliação.

O usuário que possui a licença de avaliação ativa é exibido em uma mensagem quando o jogo de avaliação é iniciado:

<img src="https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=d7ce2cbb02c139f99d5889ed54544e4d" alt="TCUI da avaliação limitada por uso: &#x22;<Gamertag>, você tem menos de x horas restantes&#x22;" data-og-width="1920" width="1920" data-og-height="1080" height="1080" data-path="images/xstore/usagelimitedtrial.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=280&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=d11e00e9c546a270c8ab17a9981600d5 280w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=560&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=75d1c3815a7b5eec324c2564ef839d98 560w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=840&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=e958634047e60a3904ae7421171837d3 840w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=1100&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=78eee31f32eee6cca22f80c9e518215f 1100w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=1650&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=670602c28fd5ebae7c8a75806cf0e899 1650w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=2500&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=94c27565ad1aaf55b4b661a4f260e418 2500w" />

O exemplo de código a seguir mostra como verificar `isTrialOwnedByThisUser`.

```cpp theme={null}
void CALLBACK GameLicenseTrialCheck(XAsyncBlock* asyncBlock)
{
    XStoreGameLicense result{};

    HRESULT hr = XStoreQueryGameLicenseResult(
        asyncBlock,
        &result);

    // Is this a trial?
    if (result.isActive && result.isTrial)
    {
        // Is this trial owned by this user?  
        if (!result.isTrialOwnedByThisUser)
        {
            // The user can't use another user's trial time. Show an error message.
        }
    }
}

void QueryGameLicense(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle)
{
    auto async = new XAsyncBlock{};
     asyncBlock->queue = m_asyncQueue;
    asyncBlock->callback = GameLicenseTrialCheck;

    HRESULT hr = XStoreQueryGameLicenseAsync(
        storeContextHandle,
        async);
}
```

## Salvar o estado do jogo para o usuário original da avaliação

Os jogos habilitados para os XBOX services que têm campanhas para um jogador ou outros modos de jogo que acompanham o progresso entre sessões usam o armazenamento conectado para salvar o estado do jogo. Com uma avaliação limitada, no entanto, um usuário de PC pode criar várias contas Microsoft e continuar jogando além do limite de tempo enquanto salva o progresso (usando a mesma conta XBOX). Para obter mais informações sobre esse cenário, consulte [Lidando com cenários de contas da loja incompatíveis no PC](/pt-BR/publishing/xstore-commerce/xstore-mismatched-accounts).

Essa brecha pode ser evitada salvando o valor de [XStoreGameLicense](/pt-BR/reference/system/xstore/xstore_members)`.trialUniqueId` quando o progresso do jogo é salvo. Posteriormente, quando o usuário começar a jogar a avaliação novamente, você poderá verificar se o valor de `trialUniqueId` corresponde ao da primeira execução.

Este código pressupõe que o jogo salva o `trialUniqueId` como parte do salvamento do jogo e tem uma função `GetSavedTrialUniqueId` que retorna esse valor.

```cpp theme={null}
void CALLBACK GameLicenseTrialCheck(XAsyncBlock* asyncBlock)
{
    XStoreGameLicense result{};

    HRESULT hr = XStoreQueryGameLicenseResult(
        asyncBlock,
        &result);

    // Is this a trial?
    if (result.isActive && result.isTrial)
    {
        // Is this trial owned by this user?
        if (!result.isTrialOwnedByThisUser)
        {
            // The user can't use another user's trial time. Show an error message.
        }
        else
        {
            // Read the trialUniqueId that was saved with the game on the first run.
            char trialUniqueId = GetSavedTrialUniqueId();
            if (trialUniqueId != result.trialUniqueId)
            {
                // Because the IDs don't match, start the game from the beginning.
            }
        }
    }
}
```

## Testando avaliações em desenvolvimento

Para testar seu jogo com uma licença de avaliação, o jogo deve primeiro ser configurado com uma licença de avaliação no Partner Center.

### XBOX

Para builds locais, é necessária uma licença real. Para builds soltos e empacotados, é necessário aplicar uma substituição de ID de conteúdo e de EKBID no MicrosoftGameConfig. Para obter mais informações, consulte [Habilitando o teste de licenças](/pt-BR/publishing/xstore-commerce/xstore-licensing-setup).

Observe que o EKBID real de um build de avaliação deve ser usado aqui. Para obter o EKBID, você precisa baixar o build do jogo da Microsoft Store com uma conta que tenha uma licença de avaliação.

<img src="https://mintcdn.com/microsoft-4404708b/hprF_XHEe0cnRr8N/images/xstore/pdptrial.webp?fit=max&auto=format&n=hprF_XHEe0cnRr8N&q=85&s=c3119c04473575c1054c89a8dc840976" alt="PDP de avaliação com o botão &#x22;Install Free Trial&#x22; realçado" width="1920" height="1080" data-path="images/xstore/pdptrial.webp" />

Depois de configurado, ao iniciar com uma conta de teste que obteve a licença de avaliação da loja, `XStoreGameLicense` exibe atributos de avaliação precisos. Iniciar o build deve exibir a interface do usuário de notificação de avaliação.

### PC

É o mesmo processo usado para habilitar builds com uma licença completa: use a identidade de aplicativo correta no MicrosoftGame.config e garanta a ID de conteúdo adequada no local do Registro, e o build respeitará a licença da conta conectada ao aplicativo Microsoft Store, seja de avaliação ou não.

## Documentação de referência da API

* [XStore (conteúdo da API)](/pt-BR/reference/system/xstore/xstore_members)
  * Estruturas
    * [XStoreGameLicense](/pt-BR/reference/system/xstore/xstore_members)

## Confira também

[Visão geral do comércio](/pt-BR/publishing/xstore-commerce/xstore-commerce-overview)

[Habilitando o desenvolvimento e o teste do XStore](/pt-BR/publishing/xstore-commerce/xstore-product-testing-setup)

[Habilitando o teste de licenças](/pt-BR/publishing/xstore-commerce/xstore-licensing-setup)

[Referência da API XStore](/pt-BR/reference/system/xstore/xstore_members)


## Related topics

- [Integração de Parceiro XBOX para acesso e publicação](/pt-BR/home/onboarding.md)
- [Documentação de desenvolvimento de jogos XBOX](/pt-BR/index.md)
- [Requisitos XBOX testados na certificação para jogos de console XBOX](/pt-BR/publishing/certification/console-cert-tested-requirements.md)
- [XR-003 Qualidade do título para envio](/pt-BR/publishing/certification/xr/xr-003.md)
- [Compile e execute seu primeiro título de console com o GDKX](/pt-BR/home/build-first-title/first-console-title-walkthrough.md)
