【发布时间】:2021-05-16 12:32:06
【问题描述】:
我在该应用中有 3 个可用的应用内购买。 在生产中的版本上,我转到屏幕选择订阅计划。 当我点击订阅按钮时,没有打开底部表格来确认价格/订阅并要求用户验证。
它在 testflight 中使用完全相同的构建工作正常:
【问题讨论】:
标签: ios in-app-purchase testflight production
我在该应用中有 3 个可用的应用内购买。 在生产中的版本上,我转到屏幕选择订阅计划。 当我点击订阅按钮时,没有打开底部表格来确认价格/订阅并要求用户验证。
它在 testflight 中使用完全相同的构建工作正常:
【问题讨论】:
标签: ios in-app-purchase testflight production
问题来自于传递给代码中使用的 validateIosReceipt 函数的错误参数 在生产中,第二个参数应该是 false (isTests),否则会调用错误的收据验证 url
但这意味着不能将相同的构建用于 TestFlight 和 Production,对于 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。
【讨论】: