Sovelluksen sisäisten ostojen lisääminen projektiisi | hyperPad Documentation

Loading...

Logo

Tämä opas osoittaa, kuinka lisätä sovelluksen sisäisiä ostoja viedylle hyperPad-projektille. Tarkista kaikki alla olevat vaatimukset ennen jatkamista.

Vaatimukset

  • Sinulla on oltava Mac-tietokone projektisi viemiseksi ja sovelluksen sisäisten ostojen lisäämiseksi viedylle projektille.
  • Sinulla on oltava cocoapods asennettuna Macille. Jos sinulla ei ole cocoapodsia asennettuna Macilla, seuraa ohjeita täällä.
  • Sinulla on oltava Terminal -sovellus asennettuna Macille.
  • Sinulla on oltava tekstieditorisovellus asennettuna Macille.

Menettelytapa

  1. Lisää pod 'SwiftyStoreKit' viestin listaasi viedyn projektisi Podfile -tiedostoon käyttämällä tekstieditoria.
  2. Aja terminaalissa pod install. Tämä voi kestää hetken, joten pidä kiinni!
  3. Korvaa HPSwift.swift -tiedoston sisältö seuraavalla tiedostolla
//
// HPSwift.swift
// hyperPad-Project
//
// Luonut 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 {
                            // Toimita sisältö palvelimelta, sitten:
                            SwiftyStoreKit.finishTransaction(purchase.transaction)
                        }
                        // Vapauta sisältö
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")

                    case .failed, .purchasing, .deferred:
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
                        break // ei mitään
                    @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("Ei mitään palautettavaa")
                    }
                }
            })

            /*
             Lisää käyttäytymisen toiminnallisuutta tähän
            */

            behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
                 // käsittele sovelluksen sisäisen ostamisen logiikkaa! //
                    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 = "Tuntematon virhe. Ota yhteyttä tukeen"
                            case .clientInvalid: message = "Ei sallita tekemään maksua"
                            case .paymentCancelled: break
                            case .paymentInvalid: message = "Oston tunnus oli virheellinen"
                            case .paymentNotAllowed: message = "Laitetta ei sallita maksamaan"
                            case .storeProductNotAvailable: message = "Tuote ei ole saatavilla nykyisessä kaupassa"
                            case .cloudServicePermissionDenied: message = "Pääsy pilvipalvelun tietoihin ei ole sallittua"
                            case .cloudServiceNetworkConnectionFailed: message = "Yhteyden muodostaminen verkkoon ei onnistunut"
                            case .cloudServiceRevoked: message = "Käyttäjä on perunut luvan käyttää tätä pilvipalvelua"
                            default: message = ((error as NSError).localizedDescription)
                            }
                            behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
                        }
                    }
            })
        }
    }

}

Huomioitavia asioita

behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
                // lisää koodi tähän
            })

Tämä muodostaa yhteyden, kun aktivoit lähetys käyttäytyminen restorePurchases avaimella.

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

Kun ostos on suoritettu, se laukaisee vastaanottoveitset viesteillä purchaseComplete avaimella. INSERT_PURCHASE_IDENTIFIER_HERE_OR_USE_recieveValue voidaan korvata joko oston tunnuksella AppStoreConnectista TAI receiveValue-parametrilla. Jos käytät receiveValue, varmista, että lähetyksessä käyttäytät olet asioistasi saatoston tunnusta App Store Connectista.