Eğitimler
Projenize Uygulama İçi Satın Almalar Eklemek
Last updated November 27, 2023
Bu kılavuz, dışa aktarılan hyperPad projenize uygulama içi satın alımlar nasıl ekleyeceğinizi gösterecektir. Devam etmeden önce aşağıdaki gereksinimleri kontrol edin.
Gereksinimler
- Projenizi dışa aktarmak ve dışa aktarılan projenize uygulama içi satın almalar eklemek için bir Mac bilgisayarına ihtiyacınız var.
- Mac'inizde cocoapods kurulu olmalıdır. Cocoapods'un Mac'inizde kurulu yoksa, buradaki talimatları izleyin.
- Mac'inizde Terminal uygulamasının kurulu olması gerekmektedir.
- Mac'inizde bir metin düzenleyici uygulamasının kurulu olması gerekmektedir.
Prosedür
- Dışa aktarılan projenizin Podfile dosyasındaki pod listesine 'SwiftyStoreKit' eklenecektir. Bunu bir metin düzenleyici kullanarak yapın.
- Terminalde pod install komutunu çalıştırın. Bu biraz zaman alabilir, bu yüzden bekleyin!
- Aşağıdaki dosyayla HPSwift.swift dosyasının içeriğini değiştirin.
//
// HPSwift.swift
// hyperPad-Project
//
// Created by Hamed Saadat on 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 {
// Sunucu üzerinden içerik ver, ardından:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// İçeriği aç
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")
case .failed, .purchasing, .deferred:
behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
break // hiçbir şey yapma
@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("Hiçbir şey geri yüklenmedi")
}
}
})
/*
Davranış işlevselliğini burada ekleyin
*/
behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
// Uygulama içi satın alma mantığını buradan yönetin! //
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 = "Bilinmeyen hata. Lütfen destekle iletişime geçin"
case .clientInvalid: message = "Ödeme yapmaya izin verilmedi"
case .paymentCancelled: break
case .paymentInvalid: message = "Satın alma kimliği geçersizdir"
case .paymentNotAllowed: message = "Cihazın ödeme yapmasına izin verilmedi"
case .storeProductNotAvailable: message = "Ürün mevcut mağazada bulunmamaktadır"
case .cloudServicePermissionDenied: message = "Bulut hizmeti bilgilerine erişime izin verilmedi"
case .cloudServiceNetworkConnectionFailed: message = "Ağa bağlanılamadı"
case .cloudServiceRevoked: message = "Kullanıcı bu bulut hizmetini kullanma iznini iptal etti"
default: message = ((error as NSError).localizedDescription)
}
behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
}
}
})
}
}
}

