EasyPurchase 1.0.0

EasyPurchase 1.0.0

Md Reashed Zamil维护。



  • 作者
  • BJIT

EasyPurchase

该包的描述。版本 v1.0.0

EasyPurchase 是一个简单且易于使用的框架,用于处理 iOS 设备上的应用内购买,它是使用 Apple 的 Storekit 框架开发的。

功能

  • 适用于 iOS 11+:提供从 App Store 发起的内购支持(兼容 iOS 11 及以后版本)。
  • 用户友好的 API:享受易于理解的基于块的 API。
  • 产品验证支持:轻松验证您在 App Store Connect 中设置的产品。
  • 购买支持:处理可消耗和非可消耗的应用内购买。
  • 订阅支持:管理免费、自动续订和非续订的订阅。

要求

如果您维护或开发的应用将最低 iOS 版本设置为 11.0,则所有功能都应可用。因此,仅需要满足 iOS 设备的要求。

  • iOS 11.0

安装

您有几种方式可以在项目中安装 EasyPurchase,其中首选和推荐的方法是 Swift Package Manager、CocoaPods 和 Carthage 集成。

无论您选择哪种方法,确保将项目导入到您打算使用的任何地方

import EasyPurchase

Swift Package Manager

Swift Package Manager(SPM)是一个用于自动化 Swift 代码分布的工具,它无缝集成到 Xcode 和 Swift 编译器中。它是 EasyPurchase 推荐的安装方法。使用 SPM,EasyPurchase 的更新立即提供给您的项目。SPM 还直接集成到 Xcode。

如果您使用的是 Xcode 11 或更高版本,按照以下步骤将 EasyPurchase 添加为依赖关系

  1. 点击 文件
  2. 选择 Swift 包
  3. 选择 添加包依赖...
  4. 指定 EasyPurchase 的 Git URL:
https://github.com/BJIT-RnD/EasyPurchase.git

CocoaPods

EasyPurchase 可以作为 CocoaPod 安装,并构建为一个 Swift 框架。

要安装,请在 Podfile 中包含以下内容。

use_frameworks!

pod 'EasyPurchase', '~> 1.0'

应用启动

完成交易

为了确保您的应用始终接收到所有支付队列通知,添加您的应用观察者是非常重要的。这样,每次应用启动时,您的应用都会持续监听这些通知。EasyPurchase 通过在应用启动时调用 completeTransaction() 函数来简化此过程。

// This method is called when the app finishes launching.
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        EasyPurchase.completeTransactions { purchases in
            for purchase in purchases {
                switch purchase.transaction.transactionState {
                case .purchased, .restored:
                    if purchase.needsFinishTransaction {
                        EasyPurchase.finishTransaction(purchase.transaction)
                    }
                case .failed, .purchasing, .deferred:
                    break
                @unknown default:
                    break
                }
            }
        }
        return true
    }

如果在初始化过程中有挂起的交易,则 completeTransactions() 函数将通过完成块报告它们。这使您的应用能够根据需要更新其状态和用户界面。

重要的是要强调,您应该在代码中仅在 一次 调用 completeTransactions(),具体来说是在应用 (:didFinishLaunchingWithOptions:) 方法中。

购买

获取产品

var productRequest: InAppProductRequest?

let products = "productIdentifier"
productRequest = EasyPurchase.fetchProducts(Set(products!)) { productInfo in
    if productInfo.error != nil {
        completion(nil, productInfo.error)
    } else {
        if let retrievedProducts = productInfo.retrievedProducts {
            completion(Array(retrievedProducts), nil)
        } else {
            // invalidProductIDs
        }
    }
}
productRequest?.start()

购买产品

EasyPurchase.purchaseProduct(.nonConsumable, product: productArray[indexPath.row], quantity: 1) { [weak self] purchaseResult in
    guard let self = self else { return }

    switch purchaseResult {
    case .success(let purchase):
        alertTitle = "Successful!"
        alertMessage = "Successfully purchased: \(purchase.product.localizedTitle)"

    case .failure(let error):
        if error.code == .paymentCancelled {
            alertTitle = "Oops!"
            alertMessage = "Your purchase process is cancelled!"
        } else {
            alertTitle = "Failed!"
            alertMessage = error.localizedDescription
        }
    }
}

恢复购买

本部分解释了使用 restorePurchases() 方法恢复以前的交易。当此方法成功执行时,无论这些交易是否已过期,它都将为您提供所有非消耗性购买和所有自动续订的订阅购买。

EasyPurchase.restorePurchases(atomically: true) { results in
    print(results, "results")
    for purchase in results.restoredProductsSuccess {
        print("purchase", purchase)
    }
}

示例实现

该项目包含iOS 演示应用,作为如何利用 EasyPurchase 的示例。重要的是要理解,这些演示应用中预先注册的 In-app 购买仅用于演示和教学目的。值得注意的是,由于 iTunes Connect 有可能使它们失效,其功能可能不可靠。

注意。

EasyPurchase 不会在本地层面保留 In-app 购买数据。管理和存储这些数据的责任落在使用 EasyPurchase 的客户端或开发人员身上。他们可以根据自己的喜好选择存储解决方案,包括 NSUserDefaults、CoreData 或 Keychain 等选项。换句话说,EasyPurchase 不处理 In-app 购买信息的本地存储;这项任务留给了客户端的自由裁量,使他们可以选择最适合其特定需求的方法。