In-App-Käufe zu Ihrem Projekt hinzufügen | hyperPad Documentation

Loading...

Logo

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

  1. Fügen Sie das Pod 'SwiftyStoreKit' zur Liste der Pods in der Podfile -Datei Ihres exportierten Projekts mit einem Texteditor hinzu.
  2. Führen Sie im Terminal pod install aus. Dies kann eine Weile dauern, also bitte geduldig sein!
  3. 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.