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
。
我在应用程序中有 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
。