Thêm Mua Hàng Trong Ứng Dụng Vào Dự Án Của Bạn | hyperPad Documentation

Loading...

Logo

Hướng dẫn này sẽ trình bày cách thêm các tính năng mua hàng trong ứng dụng vào dự án hyperPad đã xuất của bạn. Vui lòng kiểm tra tất cả các yêu cầu bên dưới trước khi tiến hành.

Các yêu cầu

  • Bạn cần có một máy tính Mac để xuất dự án của bạn và thêm các tính năng mua hàng trong ứng dụng vào dự án đã xuất của bạn.
  • Bạn cần có cocoapods được cài đặt trên máy Mac của bạn. Nếu bạn chưa cài đặt cocoapods trên Mac, hãy làm theo hướng dẫn tại đây.
  • Bạn cần có ứng dụng Terminal được cài đặt trên máy Mac của bạn.
  • Bạn cần có một ứng dụng trình soạn thảo văn bản được cài đặt trên máy Mac của bạn.

Quy trình

  1. Thêm pod 'SwiftyStoreKit' vào danh sách các pod trong file Podfile của dự án đã xuất của bạn bằng trình soạn thảo văn bản.
  2. Trong terminal, chạy pod install. Việc này có thể mất chút thời gian, vì vậy hãy kiên nhẫn!
  3. Thay thế nội dung của HPSwift.swift với file sau
//
// HPSwift.swift
// hyperPad-Project
//
// Được tạo bởi Hamed Saadat vào 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 {
                            // Giao hàng nội dung từ máy chủ, sau đó:
                            SwiftyStoreKit.finishTransaction(purchase.transaction)
                        }
                        // Mở khóa nội dung
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseComplete")

                    case .failed, .purchasing, .deferred:
                        behaviours?.broadcastValue(purchase.productId as NSString, withKey: "purchaseError")
                        break // không làm gì cả
                    @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("Không có gì để khôi phục")
                    }
                }
            })

            /*
             Thêm chức năng Behaviour ở đây
            */

            behaviours?.addReceiveKey("purchase", onReceive: { (recieveValue) in
                 // xử lý logic mua hàng trong ứng dụng! //
                    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 = "Lỗi không xác định. Vui lòng liên hệ với hỗ trợ"
                            case .clientInvalid: message = "Không được phép thực hiện thanh toán"
                            case .paymentCancelled: break
                            case .paymentInvalid: message = "Mã định danh mua hàng không hợp lệ"
                            case .paymentNotAllowed: message = "Thiết bị không được phép thực hiện thanh toán"
                            case .storeProductNotAvailable: message = "Sản phẩm không khả dụng trong cửa hàng hiện tại"
                            case .cloudServicePermissionDenied: message = "Không được phép truy cập thông tin dịch vụ đám mây"
                            case .cloudServiceNetworkConnectionFailed: message = "Không thể kết nối với mạng"
                            case .cloudServiceRevoked: message = "Người dùng đã thu hồi quyền truy cập vào dịch vụ đám mây này"
                            default: message = ((error as NSError).localizedDescription)
                            }
                            behaviours?.broadcastValue(message as NSString, withKey: "purchaseFailed")
                        }
                    }
            })
        }
    }

}

Những điều cần lưu ý

behaviours?.addReceiveKey("restorePurchases", onReceive: { (receiveValue) in
                // thêm mã của bạn vào đây
            })

Điều này sẽ được kích hoạt khi bạn kích hoạt một hành vi phát sóng với khóa restorePurchases.

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

Khi việc mua hàng hoàn tất, nó sẽ kích hoạt các hành vi nhận tin nhắn với khóa purchaseComplete. INSERT_PURCHASE_IDENTIFIER_HERE_OR_USE_recieveValue có thể được thay thế bằng mã định danh của bạn từ AppStoreConnect HOẶC tham số receiveValue. Nếu bạn sử dụng receiveValue hãy đảm bảo trong hành vi phát sóng, bạn đang gửi mã định danh từ App Store Connect.