Vejledninger
Tilføjelse af køb i appen til dit projekt
Last updated November 27, 2023
Denne guide viser, hvordan du tilføjer in-app køb til dit eksporterede hyperPad-projekt. Tjek venligst alle kravene nedenfor, inden du fortsætter.
Krav
- Du skal have en Mac-computer for at eksportere dit projekt og tilføje in-app køb til dit eksporterede projekt.
- Du skal have cocoapods installeret på din Mac. Hvis du ikke har cocoapods installeret på din Mac, kan du følge instruktionerne her.
- Du skal have appen Terminal installeret på din Mac.
- Du skal have en teksteditor app installeret på din Mac.
Procedure
- Tilføj pod 'SwiftyStoreKit' til listen over pods i Podfile filen i dit eksporterede projekt ved hjælp af en teksteditor.
- I terminalen, kør pod install. Dette kan tage lidt tid, så hang på!
- Erstat indholdet af HPSwift.swift med den følgende fil
//
// HPSwift.swift
// hyperPad-Project
//
// Oprettet af Hamed Saadat den 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 {
// Lever indhold fra serveren, så:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Lås indhold op
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // gør intet
@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("Nothing to Restore")
}
}
})
/*
Tilføj funktionalitet til adfærd her
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// håndter in app køb logik! //
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 = "Ukendt fejl. Kontakt venligst support"
case .clientInvalid: message = "Ikke tilladt at foretage betalingen"
case .paymentCancelled: break
case .paymentInvalid: message = "Købsidentifikatoren var ugyldig"
case .paymentNotAllowed: message = "Enheden må ikke foretage betalingen"
case .storeProductNotAvailable: message = "Produktet er ikke tilgængeligt i den aktuelle butik"
case .cloudServicePermissionDenied: message = "Adgang til cloud service-information er ikke tilladt"
case .cloudServiceNetworkConnectionFailed: message = "Kunne ikke oprette forbindelse til netværket"
case .cloudServiceRevoked: message = "Bruger har tilbagekaldt tilladelse til at bruge denne cloud-tjeneste"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}
Bemærkninger
behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
// tilføj din kode her
})
Dette vil blive aktiveret, når du aktiverer en broadcast-adfærd med restorePurchases nøgle.
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
Når købet er fuldført, aktiveres det modtagelige meddelelser med purchaseComplete nøgle. INSERT_PURCHASE_IDENTIFIER_HERE_OR_USE_recieveValue kan erstattes med enten identifikatoren for dit køb fra AppStoreConnect Eller parameteren receiveValue. Hvis du bruger receiveValue, skal du sørge for, at du i din broadcast-adfærd sender identifikatoren fra App Store Connect.

