

O TPINAPPRECEIPT é uma biblioteca leve e pura para leitura e validação da Apple no recibo de compra de aplicativos localmente.
NOTA: TPINAPPRECEIPT no projeto Objective-C-se você deseja usar o TPINAPPRECEIPT no projeto Objective-C, siga este guia.
Para integrar o TPINAPPRECEIPT ao seu projeto usando Cocoapods, especifique -o no seu Podfile :
platform :ios , '12.0'
target 'YOUR_TARGET' do
use_frameworks!
pod 'TPInAppReceipt'
endEm seguida, execute o seguinte comando:
$ pod install Em qualquer arquivo SWIFT que você deseja usar o TPINAppreceipt, importe a estrutura com import TPInAppReceipt .
Para integrar o uso do Swift Package Manager da Apple, adicione o seguinte como uma dependência ao seu Package.swift :
. package ( url : " https://github.com/tikhop/TPInAppReceipt.git " , . upToNextMajor ( from : " 3.0.0 " ) ) Em seguida, especifique "TPInAppReceipt" como uma dependência do alvo em que você deseja usar o tpinAppreceipt.
Por fim, execute o seguinte comando:
swift package update O objeto InAppReceipt encapsula informações sobre um recibo e as compras associadas a ele. Para validar o recibo de compra no aplicativo, você deve criar um objeto InAppReceipt .
Para criar um objeto InAppReceipt , você pode fornecer dados de recebimento bruto ou inicializar um recibo local.
do {
/// Initialize receipt
let receipt = try InAppReceipt . localReceipt ( )
// let receipt = try InAppReceipt() // Returns local receipt
// let receiptData: Data = ...
// let receipt = try InAppReceipt.receipt(from: receiptData)
} catch {
print ( error )
}
TPInAppReceipt fornece uma variedade de métodos de conveniência para validar o recibo de compra no aplicativo:
/// Verify hash
try ? receipt . verifyHash ( )
/// Verify bundle identifier
try ? receipt . verifyBundleIdentifier ( )
/// Verify bundle version
try ? receipt . verifyBundleVersion ( )
/// Verify signature
try ? receipt . verifySignature ( )
/// Validate all at once
do {
try receipt . verify ( )
} catch IARError . validationFailed ( reason : . hashValidation ) {
// Do smth
} catch IARError . validationFailed ( reason : . bundleIdentifierVerification ) {
// Do smth
} catch IARError . validationFailed ( reason : . signatureValidation ) {
// Do smth
} catch {
// Do smth
}NOTA: A Apple recomenda executar a validação de recibo logo após o lançamento do seu aplicativo. Para segurança adicional, você pode repetir essa verificação periodicamente enquanto seu aplicativo estiver em execução. Nota: Se a validação falhar no iOS, tente atualizar o recibo primeiro.
Se o seu aplicativo oferecer preços introdutórios para assinaturas de renovação automática, você precisará despojar o preço correto, seja a introdução ou o preço normal.
A classe InAppReceipt fornece uma interface para determinar a elegibilidade introdutória de preços. No mais simples, basta fornecer um Set de identificadores de produto que pertencem ao mesmo grupo de assinatura:
// Check whether user is eligible for any products within the same subscription group
var isEligible = receipt . isEligibleForIntroductoryOffer ( for : [ " com.test.product.bronze " , " com.test.product.silver " , " com.test.product.gold " ] )NOTA: Para determinar se um usuário é elegível para uma oferta introdutória, você deve inicializar e validar o recibo primeiro e só então verifique se há elegibilidade.
/// Initialize receipt
let receipt = try ! InAppReceipt . localReceipt ( )
/// Base64 Encoded Receipt
let base64Receipt = receipt . base64
/// Check whether receipt contains any purchases
let hasPurchases = receipt . hasPurchases
/// All auto renewable `InAppPurchase`s,
let purchases : [ InAppPurchase ] = receipt . autoRenewablePurchases
/// all ACTIVE auto renewable `InAppPurchase`s,
let activePurchases : [ InAppPurchase ] = receipt . activeAutoRenewableSubscriptionPurchases // Retrieve Original TransactionIdentifier for Product Name
receipt . originalTransactionIdentifier ( ofProductIdentifier : subscriptionName )
// Retrieve Active Auto Renewable Subscription's Purchases for Product Name and Specific Date
receipt . activeAutoRenewableSubscriptionPurchases ( ofProductIdentifier : subscriptionName , forDate : Date ( ) )
// Retrieve All Purchases for Product Name
receipt . purchases ( ofProductIdentifier : subscriptionName ) Quando necessário, use esse método para garantir que o recibo com o qual você esteja trabalhando esteja atualizado.
InAppReceipt . refresh { ( error ) in
if let err = error
{
print ( err )
} else {
initializeReceipt ( )
}
} O TPINAPPRECEIPT é liberado sob uma licença do MIT. Consulte a licença para obter mais informações.