

TpinAppreceipt-это легкая библиотека для чтения и проверки Apple в квитанции о покупке приложения в чистотех.
ПРИМЕЧАНИЕ. TPINAPRECEIPT в проекте Objective-C-если вы хотите использовать TPINAPPRECEIPT в проекте Objective-C, следуйте этому руководству.
Чтобы интегрировать TPINAPRECEIPT в ваш проект с использованием кокопод, укажите его в своем Podfile :
platform :ios , '12.0'
target 'YOUR_TARGET' do
use_frameworks!
pod 'TPInAppReceipt'
endЗатем запустите следующую команду:
$ pod install В любом Swift -файле вы хотели бы использовать TpinAppreceipt, импортируйте структуру с import TPInAppReceipt .
Чтобы интегрировать использование Manager Apple Swift Package Manager, добавьте следующее в качестве зависимости в ваш Package.swift Swift:
. package ( url : " https://github.com/tikhop/TPInAppReceipt.git " , . upToNextMajor ( from : " 3.0.0 " ) ) Затем укажите "TPInAppReceipt" как зависимость цели, в которой вы хотите использовать TpinAppreceipt.
Наконец, запустите следующую команду:
swift package update Объект InAppReceipt инкапсулирует информацию о квитанции и связанных с ним покупки. Чтобы проверить квитанцию о покупке в приложении, вы должны создать объект 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. Смотрите лицензию для получения дополнительной информации.