Adăugarea Achizițiilor În Aplicație La Proiectul Tău | hyperPad Documentation

Loading...

Logo

Această ghid va demonstra cum să adăugați achiziții în aplicație la proiectul dumneavoastră exportat hyperPad. Vă rugăm să verificați toate cerințele de mai jos înainte de a continua.

Cerințe

  • Trebuie să aveți un computer Mac pentru a exporta proiectul și a adăuga achiziții în aplicație la proiectul dumneavoastră exportat.
  • Trebuie să aveți cocoapods instalat pe Mac. Dacă nu aveți cocoapods instalat pe Mac-ul dumneavoastră, urmați instrucțiunile aici.
  • Trebuie să aveți aplicația Terminal instalată pe Mac.
  • Aveți nevoie de o aplicație editor de text instalată pe Mac.

Procedură

  1. Adăugați pod 'SwiftyStoreKit' în lista de poduri din fișierul Podfile al proiectului dumneavoastră exportat folosind un editor de text.
  2. În terminal, rulați pod install. Acest lucru poate dura câteva momente, așa că așteptați!
  3. Înlocuiți conținutul fișierului HPSwift.swift cu următorul fișier
//
// HPSwift.swift
// hyperPad-Project
//
// Creat de Hamed Saadat pe 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 {
                            // Livrați conținut de la server, apoi:
                            SwiftyStoreKit.finishTransaction(purchase.transaction)
                        }
                        // Deblocați conținutul
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")

                    case .failed, .purchasing, .deferred:
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
                        break // nu face nimic
                    @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("Nimic de restaurat")
                    }
                }
            })

            /*
             Adăugați funcționalitatea Behaviour aici
            */

            behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
                 // gestionați logica de achiziție în aplicație! //
                    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 = "Eroare necunoscută. Vă rugăm să contactați suportul"
                            case .clientInvalid: message = "Nu aveți permisiunea de a efectua plata"
                            case .paymentCancelled: break
                            case .paymentInvalid: message = "Identificatorul achiziției a fost invalid"
                            case .paymentNotAllowed: message = "Dispozitivul nu are permisiunea de a efectua plata"
                            case .storeProductNotAvailable: message = "Produsul nu este disponibil în magazinul curent"
                            case .cloudServicePermissionDenied: message = "Accesul la informațiile serviciului cloud nu este permis"
                            case .cloudServiceNetworkConnectionFailed: message = "Nu s-a putut conecta la rețea"
                            case .cloudServiceRevoked: message = "Utilizatorul a revocat permisiunea de a utiliza acest serviciu cloud"
                            default: message = ((error as NSError).localizedDescription)
                            }
                            behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
                        }
                    }
            })
        }
    }

}