In-App-Käufe zu Ihrem Projekt hinzufügen
Dieser Leitfaden zeigt, wie Sie In-App-Käufe zu Ihrem exportierten hyperPad-Projekt hinzufügen können. Bitte überprüfen Sie alle unten aufgeführten Anforderungen, bevor Sie fortfahren.
Anforderungen
- Sie benötigen einen Mac-Computer, um Ihr Projekt zu exportieren und In-App-Käufe zu Ihrem exportierten Projekt hinzuzufügen.
- Sie müssen cocoapods auf dem Mac installiert haben. Falls Sie cocoapods nicht auf Ihrem Mac installiert haben, folgen Sie bitte den Anweisungen hier.
- Sie benötigen die Terminal -App auf Ihrem Mac.
- Sie benötigen eine Texteditor -App auf Ihrem Mac.
Vorgehensweise
- Fügen Sie das Pod 'SwiftyStoreKit' zur Liste der Pods in der Podfile -Datei Ihres exportierten Projekts mit einem Texteditor hinzu.
- Führen Sie im Terminal pod install aus. Dies kann eine Weile dauern, also bitte geduldig sein!
- Ersetzen Sie den Inhalt von HPSwift.swift mit der folgenden Datei
//
// HPSwift.swift
// hyperPad-Project
//
// Erstellt von Hamed Saadat am 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 {
// Inhalt vom Server bereitstellen, dann:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Inhalt freischalten
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // nichts tun
@unknown default:
break
}
}
}
behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
SwiftyStoreKit.restorePurchases(atomically: true) { results in
if results.restoreFailedPurchases.count > 0 {
behaviours?.broadcastValue("Wiederherstellung fehlgeschlagen: \(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("Nichts zum Wiederherstellen")
}
}
})
/*
Fügen Sie hier Funktionalitäten für Verhalten hinzu
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// implementieren Sie die Logik für In-App-Käufe!
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 = "Unbekannter Fehler. Bitte wenden Sie sich an den Support"
case .clientInvalid: message = "Zahlung nicht erlaubt"
case .paymentCancelled: break
case .paymentInvalid: message = "Die Kaufbezeichnung war ungültig"
case .paymentNotAllowed: message = "Das Gerät ist nicht berechtigt, die Zahlung zu leisten"
case .storeProductNotAvailable: message = "Das Produkt ist im aktuellen Storefront nicht verfügbar"
case .cloudServicePermissionDenied: message = "Zugriff auf Cloud-Service-Informationen ist nicht erlaubt"
case .cloudServiceNetworkConnectionFailed: message = "Verbindung zum Netzwerk konnte nicht hergestellt werden"
case .cloudServiceRevoked: message = "Der Benutzer hat die Berechtigung zum Zugriff auf diesen Cloud-Service widerrufen"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}
Wichtige Hinweise
behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
// fügen Sie hier Ihren Code hinzu
})
Dies wird ausgelöst, wenn Sie ein Broadcast-Verhalten mit dem wiederherstellenKäufe -Schlüssel auslösen.
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
Sobald der Kauf abgeschlossen ist, wird es Verhaltensweisen mit dem Empfangenachrichtenschlüssel purchaseComplete auslösen. INSERT_PURCHASE_IDENTIFIER_HERE_OR_USE_recieveValue kann durch entweder die Kennung Ihres Kaufs von AppStoreConnect ODER den receiveValue-Parameter ersetzt werden. Wenn Sie receiveValue verwenden, stellen Sie sicher, dass Sie in Ihrem Broadcast-Verhalten die Kennung aus dem App Store Connect senden.

