iOS 应用内购买在生产环境中不起作用(在 testflight 中正常)

iOS InApp purchases do not work in Production (okay in testflight)

我在应用程序中有 3 个应用程序内购买可用。 在制作中的版本上,我转到屏幕上选择订阅计划。 当我单击订阅按钮时,没有底部 sheet 打开以确认 price/subscription 并要求用户验证。

它在测试飞行中使用完全相同的版本运行良好:

问题是由于传递给代码中使用的 validateIosReceipt 函数的参数有误 在生产中第二个参数应该是 false (isTests),否则会调用错误的收据验证 url

但这意味着同一个构建不能用于TestFlight和Production,对于TestFlight该参数应该是true,但在production中应该是false

您可以在 Bundle 上使用此扩展来确定 isTests 参数的正确值:

public extension Bundle {
    var isTests: Bool {
        #if DEBUG
            return true
        #else
            return self.appStoreReceiptURL?.lastPathComponent == "sandboxReceipt"
        #endif
    }
}

对于调试和 TestFlight 构建,此 returns true,对于生产构建 false