

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許可發布。有關更多信息,請參見許可證。