Menambahkan Pembelian Dalam Aplikasi ke Proyek Anda | hyperPad Documentation

Loading...

Logo

Panduan ini akan menunjukkan cara menambahkan pembelian dalam aplikasi ke proyek hyperPad yang telah diekspor. Silakan periksa semua syarat di bawah ini sebelum melanjutkan.

Syarat

  • Anda perlu memiliki komputer Mac untuk mengekspor proyek Anda dan menambahkan pembelian dalam aplikasi ke proyek yang telah diekspor.
  • Anda perlu memiliki cocoapods terpasang di Mac. Jika Anda tidak memiliki cocoapods yang terpasang di Mac Anda, ikuti instruksi di sini.
  • Anda perlu memiliki aplikasi Terminal terpasang di Mac Anda.
  • Anda memerlukan aplikasi editor teks terpasang di Mac Anda.

Prosedur

  1. Tambahkan pod 'SwiftyStoreKit' ke dalam daftar pod di file Podfile proyek Anda yang telah diekspor menggunakan editor teks.
  2. Di terminal, jalankan pod install. Ini mungkin memakan waktu, jadi tunggu sebentar!
  3. Ganti isi dari HPSwift.swift dengan file berikut
//
// HPSwift.swift
// hyperPad-Project
//
// Dibuat oleh Hamed Saadat pada 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 {
                            // Kirim konten dari server, kemudian:
                            SwiftyStoreKit.finishTransaction(purchase.transaction)
                        }
                        // Buka konten
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")

                    case .failed, .purchasing, .deferred:
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
                        break // tidak melakukan apapun
                    @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("Tidak ada yang untuk dipulihkan")
                    }
                }
            })

            /*
             Tambahkan fungsionalitas Behaviour di sini
            */

            behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
                 // tangani logika pembelian dalam aplikasi! //
                    SwiftyStoreKit.purchaseProduct("MASUKKAN_IDENTIFIKATOR_PEMBELIAN_DI_SINI_ATAU_GUNAKAN_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 = "Kesalahan tidak diketahui. Silakan hubungi dukungan"
                            case .clientInvalid: message = "Tidak diizinkan untuk melakukan pembayaran"
                            case .paymentCancelled: break
                            case .paymentInvalid: message = "Identifikator pembelian tidak valid"
                            case .paymentNotAllowed: message = "Perangkat tidak diizinkan untuk melakukan pembayaran"
                            case .storeProductNotAvailable: message = "Produk tidak tersedia di toko saat ini"
                            case .cloudServicePermissionDenied: message = "Akses ke informasi layanan awan tidak diizinkan"
                            case .cloudServiceNetworkConnectionFailed: message = "Tidak dapat terhubung ke jaringan"
                            case .cloudServiceRevoked: message = "Pengguna telah mencabut izin untuk menggunakan layanan awan ini"
                            default: message = ((error as NSError).localizedDescription)
                            }
                            behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
                        }
                    }
            })
        }
    }

}