返回

iOS 内购必备:StoreKit 框架上手指南

Android

iOS 内购开发指南:掌握 StoreKit 框架

准备工作:

开启你的 iOS 内购之旅前,你需要完成以下准备工作:

  • 确保你的 App 已上架 App Store
  • 创建一个 App Store Connect 账号
  • 创建内购项目,获取唯一标识 (Product ID)
  • 在你的 App 中集成 StoreKit 框架

实现内购功能:

StoreKit 框架提供了一系列 API,助你轻松实现内购功能:

  1. 创建一个 SKProductsRequest 对象,设置要购买的产品的 Product ID
  2. SKProductsRequest 对象添加到 SKPaymentQueue
  3. 当收到 SKPaymentQueueupdatedTransactions 通知时,检查交易状态
  4. 如果交易成功,则向用户交付购买的产品或服务

注意要点:

在实施内购功能时,请注意以下要点:

  • 购买项目前,你需要 Product ID,这是创建内购项目时就要求输入的字段。对于需要展示在 App 中购买的项目,你需要维护这些项目的唯一标识。
  • 当用户购买自动续期订阅或非续期订阅时,你的 App 应当让用户能够在所有设备上访问这一订阅,并让用户能够恢复以前购买的项目。牢记你之前设置的交易观察器。这可以确保在你的 App 的整个生命周期内,都可以监听交易的相关事件通知,即使你当前不处在 App 内。
  • 值得注意的是,当交易失败是除了用户主动取消的原因外,你需要为用户显示对应的错误提示。

常见问题解答:

在 iOS 内购开发过程中,你可能会遇到一些常见问题,这里我们列举一些 Q&A:

  • Q:我的 App 在沙盒环境中可以正常购买,但在真机上却无法购买。
    A: 确保你的 App 已上架 App Store,并且内购项目已通过审核。

  • Q:我的 App 在真机上可以正常购买,但在沙盒环境中却无法购买。
    A: 确保你在沙盒环境中使用了正确的测试账号。

  • Q:我收到 SKPaymentQueueupdatedTransactions 通知时,交易状态是 SKPaymentTransactionStateFailed
    A: 检查你的 App Store Connect 账号中的付款信息是否正确。

结论:

StoreKit 框架是 iOS 内购功能的得力助手,掌握了它的使用技巧,你可以轻松实现 App 的内购功能,从而提升 App 的变现能力。

代码示例:

// 创建 SKProductsRequest 对象
let request = SKProductsRequest(productIdentifiers: ["com.example.myApp.product"])

// 将 SKProductsRequest 对象添加到 SKPaymentQueue
SKPaymentQueue.default().add(request)

// 监听 SKPaymentQueue 的 updatedTransactions 通知
NotificationCenter.default.addObserver(self, selector: #selector(handleUpdatedTransactions), name: .updatedTransactions, object: nil)

// 处理 updatedTransactions 通知
@objc func handleUpdatedTransactions(notification: Notification) {
    guard let transactions = notification.userInfo?[SKPaymentTransactionStateKey] as? [SKPaymentTransaction] else { return }

    for transaction in transactions {
        switch transaction.transactionState {
        case .purchased:
            // 处理购买成功后的逻辑
            break
        case .failed:
            // 处理购买失败后的逻辑
            break
        default:
            break
        }
    }
}