Tutoriaus
Afegint compres a l'aplicació al teu projecte
Last updated November 27, 2023
Aquesta guia demostrarà com afegir compres dins l'aplicació al teu projecte hyperPad exportat. Si us plau, comprova tots els requisits a continuació abans de continuar.
Requisits
- Necessites tenir un ordinador Mac per exportar el teu projecte i afegir compres dins l'aplicació al teu projecte exportat.
- Necessites tenir cocoapods instal·lat al Mac. Si no tens cocoapods instal·lat al teu Mac, segueix les instruccions aquí.
- Necessites tenir l'aplicació Terminal instal·lada al teu Mac.
- Necessites tenir una aplicació de editor de text instal·lada al teu Mac.
Procediment
- Afegeix el pod 'SwiftyStoreKit' a la llista de pods al fitxer Podfile del teu projecte exportat utilitzant un editor de text.
- A la terminal, executa pod install. Això pot trigar una estona, així que mantingues la paciència!
- Substitueix el contingut de HPSwift.swift pel següent fitxer
//
// HPSwift.swift
// hyperPad-Project
//
// Creat per Hamed Saadat el 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 {
// Entrega el contingut del servidor, després:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Desbloqueja el contingut
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // no fer res
@unknown default:
break
}
}
}
behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
SwiftyStoreKit.restorePurchases(atomically: true) { results in
if results.restoreFailedPurchases.count > 0 {
behaviours?.broadcastValue("Restauració fallida: \(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("Rescat no disponible")
}
}
})
/*
Afegeix la funcionalitat de comportament aquí
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// gestiona la lògica de compra dins l'aplicació! //
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 = "Error desconegut. Si us plau, contacta amb el suport"
case .clientInvalid: message = "No es permet realitzar el pagament"
case .paymentCancelled: break
case .paymentInvalid: message = "L'identificador de compra era invàlid"
case .paymentNotAllowed: message = "L'aparell no està permès per fer el pagament"
case .storeProductNotAvailable: message = "El producte no està disponible a la botiga actual"
case .cloudServicePermissionDenied: message = "L'accés a la informació del servei en núvol no està permès"
case .cloudServiceNetworkConnectionFailed: message = "No es va poder connectar a la xarxa"
case .cloudServiceRevoked: message = "L'usuari ha revocat el permís d'ús d'aquest servei en núvol"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}

