Compartilhar via


Comprando produtos não consumíveis no Xamarin.iOS

Os produtos não consumíveis são "de propriedade" do cliente. A expectativa é que eles sempre tenham acesso a eles, mesmo que seu aparelho seja perdido/roubado ou eles comprem um novo. Eles são úteis para livros, edições de revistas, níveis de jogo, filtros de fotos, 'pro-features', etc. Uma vez que um usuário tenha comprado um produto não consumível, ele nunca mais terá que pagar por ele. Se o código acidentalmente permitir que eles tentem, o StoreKit mostrará uma mensagem informando que ele já foi comprado.

Amostra de produtos não consumíveis

O exemplo contém um projeto chamado NonConsumables. O exemplo de código demonstra como implementar produtos não consumíveis usando filtros de foto como exemplo. Depois de comprar um filtro, você pode aplicá-lo à foto repetidamente. Você nunca precisa comprá-lo novamente.

O processo de compra é mostrado nesta série de capturas de tela - o botão Comprar torna-se o botão de ativação de recursos:

O processo de compra é mostrado nesta série de capturas de tela

O processo de compra é o mesmo de um produto consumível; A principal diferença está em como a compra é rastreada no código do aplicativo. Neste exemplo, o botão Comprar só estará disponível se o produto ainda não tiver sido comprado, caso contrário, o botão ativará o próprio recurso.

O diagrama a seguir mostra as interações entre as classes e o servidor da App Store para executar uma compra de produto não consumível:

As interações entre as classes e o servidor da App Store para realizar uma compra de produto não consumível

A principal diferença do exemplo de Consumível é que, uma vez concluída a compra, a interface do usuário é atualizada para evitar a recompra. Neste exemplo, a notificação de uma transação bem-sucedida atualiza a interface do usuário para que o botão Comprar seja convertido em um botão que ativa o próprio recurso.

Recompra de produtos não consumíveis

Seu código normalmente deve ocultar ou redirecionar um botão de compra depois que o produto tiver sido comprado com sucesso, para evitar que o usuário tente comprar o produto novamente. O aplicativo de exemplo faz isso alterando o botão Comprar para o botão que faz o filtro de foto de exemplo funcionar.

Há situações em que um aplicativo não pode dizer se um produto não consumível já foi comprado:

  • Se um aplicativo for excluído e reinstalado em um dispositivo, todos os registros de compra serão apagados (a menos que/até que o usuário faça um backup-restauração).
  • Se o usuário tiver o aplicativo instalado em dois (ou mais) dispositivos e fizer uma compra em um dos dispositivos. Os outros dispositivos continuarão a mostrar o produto disponível para compra.
  • Se um cliente tentar recomprar um produto não consumível nessas situações, a App Store preencherá o produto novamente sem custo. A interface do usuário aparecerá inicialmente para realizar uma compra (por exemplo, um alerta de confirmação é exibido e o ID Apple será necessário), no entanto, o usuário verá uma mensagem avisando que o produto já foi comprado.

O caminho do código neste cenário é exatamente o mesmo que uma compra normal, as únicas diferenças são:

  • O usuário não é cobrado novamente pelo produto.
  • O SKPaymentTransaction objeto passado para o aplicativo terá uma OriginalTransaction propriedade que se refere à transação que foi gerada quando o produto foi comprado inicialmente.
  • Os aplicativos que vendem produtos não consumíveis também devem implementar o recurso de restauração do StoreKit para ajudar os usuários a recuperar compras existentes.