

TpinAppReceipt是一个轻巧的纯旋转库,用于在本地购买和验证Apple在本地购买Apple。
注意:Objective-C项目中的TPINAPPRECEIPT - 如果您想在Objective-C项目中使用TpinAppReceipt,请遵循本指南。
要使用Cocoapods将TpinAppReceipt集成到您的项目中,请在您的Podfile中指定:
platform :ios , '12.0'
target 'YOUR_TARGET' do
use_frameworks!
pod 'TPInAppReceipt'
end然后,运行以下命令:
$ pod install在您想使用tpinappreceipt的任何SWIFT文件中,使用import TPInAppReceipt导入框架。
要使用Apple的Swift软件包管理器集成,请添加以下作为依赖性的Package.swift :Swift:
. package ( url : " https://github.com/tikhop/TPInAppReceipt.git " , . upToNextMajor ( from : " 3.0.0 " ) )然后,将"TPInAppReceipt"指定为希望使用tpinappreceipt的目标的依赖性。
最后,运行以下命令:
swift package updateInAppReceipt对象封装了有关收据及其相关的购买的信息。要验证应用内购买收据,您必须创建一个InAppReceipt对象。
要创建InAppReceipt对象,您可以提供原始收据数据或初始化本地收据。
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提供了多种便利方法,用于验证应用内购买收据:
/// 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
}注意:Apple建议在启动应用程序后立即执行收据验证。为了获得额外的安全性,您可以在应用程序运行时定期重复此检查。注意:如果验证失败在iOS中,请首先刷新收据。
如果您的应用程序提供可自动可再生订阅的介绍性定价,则需要处理正确的价格,即简介或正常价格。
InAppReceipt类提供了一个确定入门价格资格的接口。最简单的是,只需提供一Set属于同一订阅组的产品标识符:
// 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 " ] )注意:要确定用户是否有资格获得介绍性报价,您必须首先初始化和验证收据,然后才检查资格是否资格。
/// 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 ) 必要时,请使用此方法确保与您合作的收据是最新的。
InAppReceipt . refresh { ( error ) in
if let err = error
{
print ( err )
} else {
initializeReceipt ( )
}
} TpinAppReceipt由MIT许可发布。有关更多信息,请参见许可证。