Tutoriali
Dodavanje kupnji unutar aplikacije u vaš projekt
Last updated November 27, 2023
Ovaj vodič će pokazati kako dodati kupnje unutar aplikacije u vašem izvezenom hyperPad projektu. Molimo provjerite sve zahtjeve u nastavku prije nego što nastavite.
Zahtjevi
- Trebate imati Mac računalo da biste izvezli svoj projekt i dodali kupnje unutar aplikacije u svoj izvezeni projekt.
- Trebate imati cocoapods instalirane na Mac-u. Ako nemate instalirane cocoapods na svom Mac-u, slijedite upute ovdje.
- Trebate imati aplikaciju Terminal instaliranu na svom Mac-u.
- Trebate imati instaliranu aplikaciju uređivača teksta na svom Mac-u.
Postupak
- Dodajte pod 'SwiftyStoreKit' na popis podova u datoteci Podfile vašeg izvezenog projekta koristeći uređivač teksta.
- U terminalu, pokrenite pod install. Ovo može potrajati, pa se strpite!
- Zamijenite sadržaj HPSwift.swift sljedećom datotekom
//
// HPSwift.swift
// hyperPad-Project
//
// Autor: 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 {
// Isporuči sadržaj s poslužitelja, zatim:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Otključaj sadržaj
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // ne radi ništa
@unknown default:
break
}
}
}
behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
SwiftyStoreKit.restorePurchases(atomically: true) { results in
if results.restoreFailedPurchases.count > 0 {
behaviours?.broadcastValue("Obnova nije uspjela: \(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("Nema što za obnoviti")
}
}
})
/*
Dodajte funkcionalnosti ponašanja ovdje
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// obradite logiku kupnje unutar aplikacije! //
SwiftyStoreKit.purchaseProduct("UNESITE_IDENTIFIKATOR_KUPNJE_OVDJE_ILI_UPOTRIJEBITE_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 = "Nepoznata greška. Molimo kontaktirajte podršku"
case .clientInvalid: message = "Nije dozvoljeno izvršiti uplatu"
case .paymentCancelled: break
case .paymentInvalid: message = "Identifikator kupnje je nevažeći"
case .paymentNotAllowed: message = "Uređaju nije dozvoljeno izvršiti uplatu"
case .storeProductNotAvailable: message = "Proizvod nije dostupan u trenutnoj prodavaonici"
case .cloudServicePermissionDenied: message = "Pristup informacijama o uslugama u cloudu nije dozvoljen"
case .cloudServiceNetworkConnectionFailed: message = "Nije moguće povezati se s mrežom"
case .cloudServiceRevoked: message = "Korisnik je ukinuo dopuštenje za korištenje ove usluge u cloudu"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}

