Tutoring
Legge til kjøp i appen i prosjektet ditt
Last updated November 27, 2023
Denne guiden vil demonstrere hvordan du legger til kjøp i appen i ditt eksporterte hyperPad-prosjekt. Vennligst sjekk alle kravene nedenfor før du går videre.
Krav
- Du må ha en Mac-datamaskin for å eksportere prosjektet ditt og legge til kjøp i appen i ditt eksporterte prosjekt.
- Du må ha cocoapods installert på macen. Hvis du ikke har cocoapods installert på Mac-en din, kan du følge instruksjonene her.
- Du må ha Terminal -appen installert på Mac-en din.
- Du trenger en tekstredigerings -app installert på Mac-en din.
Fremgangsmåte
- Legg til pod 'SwiftyStoreKit' i listen over pods i Podfile -filen til ditt eksporterte prosjekt ved å bruke en tekstredigerer.
- I terminalen, kjør pod install. Dette kan ta litt tid, så heng på!
- Erstatt innholdet i HPSwift.swift med følgende fil
//
// HPSwift.swift
// hyperPad-Project
//
// Opprettet av Hamed Saadat 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 {
// Lever innhold fra server, så:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Lås opp innhold
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // gjør ingenting
@unknown default:
break
}
}
}
behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
SwiftyStoreKit.restorePurchases(atomically: true) { results in
if results.restoreFailedPurchases.count > 0 {
behaviours?.broadcastValue("Gjenoppretting mislyktes: \(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("Ingenting å gjenopprette")
}
}
})
/*
Legg til oppførselsfunksjonalitet her
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// håndtere logikk for kjøp i appen! //
SwiftyStoreKit.purchaseProduct("SETT_INNKJØPSIDENTIFIKATOR_HER_ELLER_BRUK_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 = "Ukjent feil. Vennligst kontakt support"
case .clientInvalid: message = "Ikke tillatt å foreta betalingen"
case .paymentCancelled: break
case .paymentInvalid: message = "Kjøpsidentifikatoren var ugyldig"
case .paymentNotAllowed: message = "Enheten har ikke lov til å foreta betalingen"
case .storeProductNotAvailable: message = "Produktet er ikke tilgjengelig i den nåværende butikkfronten"
case .cloudServicePermissionDenied: message = "Tilgang til informasjon om skytjeneste er ikke tillatt"
case .cloudServiceNetworkConnectionFailed: message = "Kunne ikke koble til nettverket"
case .cloudServiceRevoked: message = "Brukeren har tilbakekalt tillatelsen til å bruke denne skytjenesten"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}

