iOS 如何加快测试内购功能?

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

在以前,测试内购不是一件容易的事情,需要开沙盒账号,打各种测试包之类的。

从 Xcode 14 开始,苹果推出了一个 StoreKit 配置文件,可以支持在 Xcode 中测试 App 内购买项目。还能够在不连接到 App Store 服务器的情况下购买产品,无需互联网连接,并且还能测试交易失败等各种边缘情况。

今天就来聊聊这个功能。

创建 StoreKit Configuration

要测试内购产品,需要先在 Xcode 中创建一个 StoreKit Configuration 文件,点击快捷键 Command + N,新建文件,搜索 StoreKit,可以看到一个 StoreKit Configuration File

点击下一步,输入名称,如果你的应用在 App Store Connect 上已经创建了一些内购商品,则需要勾选 Sync this file with an app in App Store Connect,勾选后会自动同步已有商品(这种情况貌似只能同步,不能编辑),最后点击下一步,完成创建。

我本次演示的 Demo 中没有勾选同步选项,创建出这个文件后,点击打开,是一个空页面,点击页面的左下角的加号:

这里可以创建用于售卖的 4 种商品类型:

  • Add Consumable In-App Purchase: 消耗品

  • Add Non-Consumable In-App Purchase: 非消耗品

  • Add Non-Renewing Subscription: 非续订订阅商品

  • Add Renewable Subscription: 可续订订阅商品

比如我们点击创建一个消耗品,输入产品名称和 ID,点击完成按钮,屏幕上出现了这个产品的信息,并且可以动态配置产品名、ID、价格、本地化信息等选项:

创建其他产品也是一样的操作,这里就不演示了。

在这个产品的上方还可以看到 Configuration Settings 的选项,点击之后可以看到关于内购的相关配置:

这里可以配置更详细的内容,比如默认的地区、语言,购买选项,以及模拟各种购买过程中的报错信息,可以自己探索一下。

启动 StoreKit 测试

要使用这个配置文件,需要在启动选项中设置,点击运行选项中的项目 -> Edit Scheme...

在 Run 一栏中的 StoreKit Configuration 中选择我们刚刚创建的配置文件,并点击完成。

此时运行项目,就能在项目中使用这个配置文件了。

代码部分

接下来可以在项目中获取刚刚配置的产品了,因为使用的是本地的配置文件,因此即使在无网的情况下也能正常进行获取和购买。

swift 复制代码
import StoreKit

class ViewController: UIViewController, SKProductsRequestDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        // 配置请求
        let req = SKProductsRequest(productIdentifiers: ["ios.product1"])
        req.delegate = self
        
        // 开始请求商品
        req.start()
    }

    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
        guard let product = response.products.first else {
            return
        }
        
        // 商品请求成功,渲染出来
        DispatchQueue.main.async {
            let label = UILabel()
            label.text = "商品ID:\(product.productIdentifier)\n商品名:\(product.localizedTitle)\n价格:\(product.price)"
            label.numberOfLines = 0
            label.textAlignment = .center
            self.view.addSubview(label)
            label.sizeToFit()
            label.center = self.view.center
        }
    }
}

我这里只是简单的写了获取商品的代码,关于购买的部分,以后专门写一篇给大家介绍。

最后运行代码,就可以成功的在模拟器上看到商品信息了:

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
游戏开发爱好者82 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
黑码哥3 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
2501_915106324 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
2501_915106325 小时前
使用 Sniffmaster TCP 抓包和 Wireshark 网络分析
网络协议·tcp/ip·ios·小程序·uni-app·wireshark·iphone
熊猫钓鱼>_>5 小时前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端
徐同保1 天前
通过ip访问nginx的服务时,被第一个server重定向了,通过设置default_server解决这个问题
ios·iphone
2501_915918411 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
2501_916007471 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
夏幻灵2 天前
HTTPS全面解析:原理、加密机制与证书体
ios·iphone
TheNextByte12 天前
如何在iPhone上恢复已删除的笔记的综合指南
笔记·ios·iphone