Tutoriály
Přidání nákupů v aplikaci do vašeho projektu
Last updated November 27, 2023
Tato příručka ukáže, jak přidat nákupy v aplikaci do vašeho exportovaného projektu hyperPad. Před pokračováním prosím zkontrolujte všechny požadavky níže.
Požadavky
- Musíte mít Mac počítač, abyste mohli exportovat svůj projekt a přidat nákupy v aplikaci do vašeho exportovaného projektu.
- Musíte mít nainstalovaný cocoapods na Macu. Pokud nemáte nainstalovaný cocoapods na svém Macu, postupujte podle pokynů zde.
- Musíte mít nainstalovanou aplikaci Terminál na vašem Macu.
- Musíte mít nainstalovanou aplikaci textový editor na vašem Macu.
Postup
- Přidejte pod 'SwiftyStoreKit' do seznamu podů v souboru Podfile vašeho exportovaného projektu pomocí textového editoru.
- V terminálu spusťte pod install. Může to chvíli trvat, tak čekejte!
- Nahraďte obsah HPSwift.swift následujícím souborem
//
// HPSwift.swift
// hyperPad-Project
//
// Vytvořeno Hamedem Saadat dne 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 {
// Dodání obsahu ze serveru, pak:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Odemknout obsah
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // nedělat nic
@unknown default:
break
}
}
}
behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
SwiftyStoreKit.restorePurchases(atomically: true) { results in
if results.restoreFailedPurchases.count > 0 {
behaviours?.broadcastValue("Obnovení selhalo: \(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("Nic k obnovení")
}
}
})
/*
Přidejte funkcionalitu chování zde
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// zpracovávejte logiku nákupů v aplikaci! //
SwiftyStoreKit.purchaseProduct("ZDE_VLOŽTE_IDENTIFIKÁTOR_NÁKUPU_NEBO_POŽIJTE_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 = "Neznámá chyba. Prosím kontaktujte podporu"
case .clientInvalid: message = "Nemáte povoleno provádět platbu"
case .paymentCancelled: break
case .paymentInvalid: message = "Identifikátor nákupu byl neplatný"
case .paymentNotAllowed: message = "Zařízení nemá oprávnění k provedení platby"
case .storeProductNotAvailable: message = "Produkt není dostupný v aktuálním obchodu"
case .cloudServicePermissionDenied: message = "Přístup k informacím o cloudových službách není povolen"
case .cloudServiceNetworkConnectionFailed: message = "Nelze se připojit k síti"
case .cloudServiceRevoked: message = "Uživatel zrušil povolení k použití této cloudové služby"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}

