Útmutatók
Alkalmazáson belüli vásárlások hozzáadása a projektedhez
Last updated November 27, 2023
Ez az útmutató bemutatja, hogyan adhatók hozzá alkalmazáson belüli vásárlások az exportált hyperPad projektedhez. Kérjük, ellenőrizd az alábbi követelményeket, mielőtt folytatnád.
Követelmények
- Szükséged van egy Mac számítógépre az exportáláshoz és az alkalmazáson belüli vásárlások hozzáadásához az exportált projektedhez.
- Telepítve kell lennie a cocoapods -nak a mac-en. Ha még nincs telepítve a cocoapods a Mac-edre, kövesd az utasításokat itt.
- Szükséged van a Terminál alkalmazásra a Mac-edre.
- Szükséged van egy szövegszerkesztő alkalmazásra a Mac-edre.
Eljárás
- Add hozzá a 'SwiftyStoreKit' podot az exportált projekted Podfile fájljának podlistájához egy szövegszerkesztő segítségével.
- A terminálban futtasd a pod install -t. Ez eltarthat egy ideig, szóval tarts ki!
- Cseréld ki a HPSwift.swift tartalmát a következő fájlra
//
// HPSwift.swift
// hyperPad-Project
//
// Készítette: 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 {
// Tartalom kézbesítése a szerverről, majd:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Tartalom feloldása
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // ne csinálj semmit
@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("Nothing to Restore")
}
}
})
/*
Add Behaviour functionality here
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// kezeld az alkalmazáson belüli vásárlás logikáját! //
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 = "Ismeretlen hiba. Kérjük, lépj kapcsolatba a támogatással"
case .clientInvalid: message = "Nem engedélyezett a fizetés végrehajtása"
case .paymentCancelled: break
case .paymentInvalid: message = "A vásárlási azonosító érvénytelen volt"
case .paymentNotAllowed: message = "Az eszköz nem engedélyezett a fizetés végrehajtására"
case .storeProductNotAvailable: message = "A termék nem elérhető a jelenlegi boltban"
case .cloudServicePermissionDenied: message = "A felhőszolgáltatás információinak elérését nem engedélyezik"
case .cloudServiceNetworkConnectionFailed: message = "Nem sikerült csatlakozni a hálózathoz"
case .cloudServiceRevoked: message = "A felhasználó visszavonta a felhőszolgáltatás használatához való engedélyt"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}

