In-App Aankopen Aan Je Project Toevoegen | hyperPad Documentation

Loading...

Logo

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

  1. Voeg de pod 'SwiftyStoreKit' toe aan de lijst van pods in het Podfile bestand van je geëxporteerde project met behulp van een teksteditor.
  2. Voer in de terminal pod install uit. Dit kan even duren, dus wacht even!
  3. 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")
                        }
                    }
            })
        }
    }

}