Tutorials
In-App Aankopen Aan Je Project Toevoegen
Last updated November 27, 2023
Deze gids laat zien hoe je in-app aankopen kunt toevoegen aan je geëxporteerde hyperPad-project. Controleer alstublieft de vereisten hieronder voordat je verder gaat.
Vereisten
- Je moet een Mac-computer hebben om je project te exporteren en in-app aankopen toe te voegen aan je geëxporteerde project.
- Je moet cocoapods geïnstalleerd hebben op je Mac. Als je geen cocoapods op je Mac hebt geïnstalleerd, volg dan de instructies hier.
- Je moet de Terminal app geïnstalleerd hebben op je Mac.
- Je moet een teksteditor app geïnstalleerd hebben op je Mac.
Procedure
- Voeg de pod 'SwiftyStoreKit' toe aan de lijst van pods in het Podfile bestand van je geëxporteerde project met behulp van een teksteditor.
- Voer in de terminal pod install uit. Dit kan even duren, dus wacht even!
- Vervang de inhoud van HPSwift.swift met het volgende bestand
//
// HPSwift.swift
// hyperPad-Project
//
// Gemaakt door Hamed Saadat op 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 content van server, dan:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Ontgrendel content
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // doe niets
@unknown default:
break
}
}
}
behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
SwiftyStoreKit.restorePurchases(atomically: true) { results in
if results.restoreFailedPurchases.count > 0 {
behaviours?.broadcastValue("Restore Failed: \(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("Niets te Herstellen")
}
}
})
/*
Voeg hier Functionaliteit voor Gedrag toe
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// verwerk in-app aankoop logica! //
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 = "Onbekende fout. Neem contact op met ondersteuning"
case .clientInvalid: message = "Niet toegestaan om de betaling te doen"
case .paymentCancelled: break
case .paymentInvalid: message = "De aankoop identifier was ongeldig"
case .paymentNotAllowed: message = "Het apparaat mag geen betaling doen"
case .storeProductNotAvailable: message = "Het product is niet beschikbaar in de huidige winkel"
case .cloudServicePermissionDenied: message = "Toegang tot cloud-service-informatie is niet toegestaan"
case .cloudServiceNetworkConnectionFailed: message = "Kon geen verbinding maken met het netwerk"
case .cloudServiceRevoked: message = "Gebruiker heeft de toestemming voor deze cloud-service ingetrokken"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}

