iOS InApp购买在生产中不起作用(在测试飞行中可以)

iOS InApp购买在生产中不起作用(在测试飞行中可以),ios,in-app-purchase,testflight,production,Ios,In App Purchase,Testflight,Production,我在应用程序中有3个应用程序内购买。 在正在制作的版本中,我会在屏幕上选择订阅计划。 当我单击subscribe按钮时,不会打开任何底部表单来确认价格/订阅并要求用户验证 它在测试飞行中工作良好,具有完全相同的构建: 问题源于传递给代码中使用的ValidateIosReceive函数的错误参数 在生产中,第二个参数应为false(isTests),否则调用的收据验证url错误 但这意味着同一版本不能用于TestFlight和生产,对于TestFlight,该参数应为true,但在生产中应为fa

我在应用程序中有3个应用程序内购买。 在正在制作的版本中,我会在屏幕上选择订阅计划。 当我单击subscribe按钮时,不会打开任何底部表单来确认价格/订阅并要求用户验证

它在测试飞行中工作良好,具有完全相同的构建:


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


但这意味着同一版本不能用于TestFlight和生产,对于TestFlight,该参数应为true,但在生产中应为false

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

public extension Bundle {
    var isTests: Bool {
        #if DEBUG
            return true
        #else
            return self.appStoreReceiptURL?.lastPathComponent == "sandboxReceipt"
        #endif
    }
}
对于调试和TestFlight生成,返回
true
,对于生产生成
false