Tutorialer
Att Lägga Till In-App Köp Till Ditt Projekt
Last updated November 27, 2023
Denna guide kommer att demonstrera hur man lägger till köp i appen i ditt exporterade hyperPad-projekt. Kontrollera alla krav nedan innan du fortsätter.
Krav
- Du behöver ha en Mac-dator för att exportera ditt projekt och lägga till köp i appen i ditt exporterade projekt.
- Du behöver ha cocoapods installerat på din Mac. Om du inte har cocoapods installerat på din Mac, följ instruktionerna här.
- Du behöver ha Terminal -appen installerad på din Mac.
- Du behöver en textredigerare -app installerad på din Mac.
Procedur
- Lägg till pod 'SwiftyStoreKit' till listan av pods i Podfile -filen i ditt exporterade projekt med en textredigerare.
- I terminalen, kör pod install. Detta kan ta en stund, så håll ut!
- Ersätt innehållet i HPSwift.swift med följande fil
//
// HPSwift.swift
// hyperPad-Project
//
// Skapad av Hamed Saadat den 2019-08-07.
//
import Foundation
import SwiftyStoreKit
@objc class HPSwift: NSObject {
fileprivate var _behaviours: HPBehaviours? = nil
@objc var behaviours: HPBehaviours? {
get {
return _behaviours
}
set(behaviours) {_behaviours = behaviours
SwiftyStoreKit.completeTransactions(atomically: true) { purchases in
for purchase in purchases {
switch purchase.transaction.transactionState {
case .purchased, .restored:
if purchase.needsFinishTransaction {
// Leverera innehåll från servern, sedan:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Lås upp innehåll
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // gör inget
@unknown default:
break
}
}
}
behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
SwiftyStoreKit.restorePurchases(atomically: true) { results in
if results.restoreFailedPurchases.count > 0 {
behaviours?.broadcastValue("Återställning misslyckades: \(results.restoreFailedPurchases)" as NSString, withKey: "purchaseError")
}
else if results.restoredPurchases.count > 0 {
results.restoredPurchases.forEach { (purchase) in
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
}
}
else {
print("Inget att återställa")
}
}
})
/*
Lägg till beteendefunktionalitet här
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// hantera logik för köp i appen! //
SwiftyStoreKit.purchaseProduct("INSERT_PURCHASE_IDENTIFIER_HERE_OR_USE_recieveValue", quantity: 1, atomically: true) { result in
switch result {
case .success(let purchase):
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .error(let error):
var message = ""
switch error.code {
case .unknown: message = "Okänt fel. Vänligen kontakta supporten"
case .clientInvalid: message = "Ej tillåten att göra betalningen"
case .paymentCancelled: break
case .paymentInvalid: message = "Köpidentifieraren var ogiltig"
case .paymentNotAllowed: message = "Enheten får inte göra betalningen"
case .storeProductNotAvailable: message = "Produkten är inte tillgänglig i den aktuella butiken"
case .cloudServicePermissionDenied: message = "Åtkomst till information om molntjänsten är inte tillåten"
case .cloudServiceNetworkConnectionFailed: message = "Kunde inte ansluta till nätverket"
case .cloudServiceRevoked: message = "Användaren har återkallat tillståndet att använda denna molntjänst"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}

