

TpinapPreceipt هي مكتبة خفيفة الوزن ونقي لقراءة Apple والتحقق من صحتها في إيصال شراء التطبيق محليًا.
ملاحظة: tpinappreceipt في مشروع Objective-C-إذا كنت ترغب في استخدام tpinappreceipt في مشروع Objective-C ، فيرجى اتباع هذا الدليل.
لدمج tpinappreceipt في مشروعك باستخدام cocoapods ، حدده في Podfile الخاص بك:
platform :ios , '12.0'
target 'YOUR_TARGET' do
use_frameworks!
pod 'TPInAppReceipt'
endثم ، قم بتشغيل الأمر التالي:
$ pod install في أي ملف سريع ترغب في استخدام tpinappreceipt ، استيراد الإطار باستخدام import TPInAppReceipt .
لتكامل باستخدام Manager Swift Package من Apple ، أضف ما يلي كاعتماد على Package.swift الخاصة بك. swift:
. package ( url : " https://github.com/tikhop/TPInAppReceipt.git " , . upToNextMajor ( from : " 3.0.0 " ) ) بعد ذلك ، حدد "TPInAppReceipt" كاعتماد على الهدف الذي ترغب فيه في استخدام tpinappreceipt.
أخيرًا ، قم بتشغيل الأمر التالي:
swift package update يلف كائن InAppReceipt معلومات حول الإيصال والمشتريات المرتبطة به. للتحقق من صحة إيصال الشراء داخل التطبيق ، يجب عليك إنشاء كائن InAppReceipt .
لإنشاء كائن InAppReceipt ، يمكنك إما تقديم بيانات إيصال RAW أو تهيئة إيصال محلي.
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 بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. انظر الترخيص لمزيد من المعلومات.