Dodawanie zakupów w aplikacji do projektu | hyperPad Documentation

Loading...

Logo

Ten przewodnik pokaże, jak dodać zakupy w aplikacji do swojego wyeksportowanego projektu hyperPad. Proszę sprawdzić wszystkie wymagania poniżej przed kontynuowaniem.

Wymagania

  • Musisz mieć komputer Mac, aby wyeksportować swój projekt i dodać zakupy w aplikacji do wyeksportowanego projektu.
  • Musisz mieć cocoapods zainstalowane na Macu. Jeśli nie masz zainstalowanego cocoapods na swoim Macu, postępuj zgodnie z instrukcjami tutaj.
  • Musisz mieć zainstalowaną aplikację Terminal na swoim Macu.
  • Potrzebujesz edytora tekstu zainstalowanego na swoim Macu.

Procedura

  1. Dodaj pod 'SwiftyStoreKit' do listy podów w pliku Podfile swojego wyeksportowanego projektu, używając edytora tekstu.
  2. W terminalu uruchom pod install. Może to zająć trochę czasu, więc czekaj!
  3. Zastąp zawartość HPSwift.swift następującym plikiem
//
// HPSwift.swift
// hyperPad-Project
//
// Utworzone przez Hameda Saadata w 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 {
                            // Dostarcz zawartość z serwera, następnie:
                            SwiftyStoreKit.finishTransaction(purchase.transaction)
                        }
                        // Odblokuj zawartość
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")

                    case .failed, .purchasing, .deferred:
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
                        break // nic nie rób
                    @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("Nic do przywrócenia")
                    }
                }
            })

            /*
             Dodaj funkcjonalność zachowań tutaj
            */

            behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
                 // obsłuż logikę zakupu w aplikacji! //
                    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 = "Nieznany błąd. Proszę skontaktować się z pomocą techniczną"
                            case .clientInvalid: message = "Nie można zrealizować płatności"
                            case .paymentCancelled: break
                            case .paymentInvalid: message = "Identyfikator zakupu był nieprawidłowy"
                            case .paymentNotAllowed: message = "Urządzenie nie ma uprawnienia do dokonania płatności"
                            case .storeProductNotAvailable: message = "Produkt nie jest dostępny w obecnym sklepie"
                            case .cloudServicePermissionDenied: message = "Dostęp do informacji o usłudze w chmurze nie jest dozwolony"
                            case .cloudServiceNetworkConnectionFailed: message = "Nie można połączyć się z siecią"
                            case .cloudServiceRevoked: message = "Użytkownik cofnął zgodę na korzystanie z tej usługi w chmurze"
                            default: message = ((error as NSError).localizedDescription)
                            }
                            behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
                        }
                    }
            })
        }
    }

}

Rzeczy do zapamiętania

behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
                // dodaj swój kod tutaj
            })

To zostanie uruchomione, gdy wyzwolisz zachowanie broadcast z kluczem restorePurchases.

behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")

Gdy zakup jest zakończony, wyzwoli zachowania wiadomości odbioru z kluczem purchaseComplete. INSERT_PURCHASE_IDENTIFIER_HERE_OR_USE_recieveValue można zastąpić identyfikatorem zakupu z AppStoreConnect LUB parametrem receiveValue. Jeśli używasz receiveValue, upewnij się, że w swoim zachowaniu broadcast wysyłasz identyfikator z App Store Connect.