Embora você não possa evitar a mensagem do sistema, você pode gerenciar a sequência de feedback para o usuário no seu aplicativo:
Exibir uma mensagem clara imediatamente: Assim que você detectar o erro de "Certificado Revogado" (dentro do case .verified(let transaction)
onde transaction.revocationDate != nil
), você deve imediatamente atualizar a UI do seu aplicativo para informar o usuário sobre a falha e o motivo. Por exemplo, você pode exibir um alerta, uma mensagem de erro na tela ou desabilitar funcionalidades relacionadas à compra.
Swift
case .verified(let transaction):
if transaction.productType == product.type, transaction.productID == productID {
if transaction.revocationDate == nil, transaction.revocationReason == nil {
purchaseState = true
await transaction.finish()
} else {
// Certificado revogado ou transação revogada.
// Aqui você exibe sua própria mensagem de erro para o usuário.
self.error = .error(NSError(domain: "PurchaseError", code: 1, userInfo: [NSLocalizedDescriptionKey: "A compra não pôde ser concluída devido a um certificado revogado. Por favor, tente novamente mais tarde ou contate o suporte."]))
// Não chame transaction.finish() para transações revogadas,
// a menos que você tenha uma lógica específica para elas.
// O StoreKit pode limpar essas transações automaticamente em alguns casos.
}
} else {
// produto inválido
self.error = .error(NSError(domain: "PurchaseError", code: 2, userInfo: [NSLocalizedDescriptionKey: "Produto da transação não corresponde."]))
}
Gerenciar o estado purchaseState
: Certifique-se de que purchaseState
só seja definido como true
se a compra for realmente válida e verificada. Em caso de certificado revogado, purchaseState
deve permanecer false
(ou ser redefinido) e você deve apresentar o erro.
Ao fazer isso, embora o usuário veja o "You're all set" momentaneamente, ele será rapidamente seguido pela mensagem de erro do seu aplicativo, o que comunica a falha de forma mais eficaz e reduz a confusão.
Em resumo, a arquitetura do StoreKit, especialmente com os arquivos de configuração, separa a confirmação inicial da compra da validação posterior. Concentre-se em fornecer um feedback claro ao usuário no seu aplicativo assim que você detectar a falha de verificação.