Oppaat
Sovelluksen sisäisten ostojen lisääminen projektiisi
Last updated November 27, 2023
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
- Lisää pod 'SwiftyStoreKit' viestin listaasi viedyn projektisi Podfile -tiedostoon käyttämällä tekstieditoria.
- Aja terminaalissa pod install. Tämä voi kestää hetken, joten pidä kiinni!
- 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.

