【发布时间】:2021-12-14 12:10:55
【问题描述】:
在使用旧 API 进行应用内购买 (StoreKit 1) 的应用上。该应用程序已在 App Store 上发布。购买是非消耗品。
在尝试迁移到 StoreKit 2 时,我无法恢复购买。 具体显示和购买产品按预期工作,但删除并重新安装应用程序,然后尝试恢复购买时,我无法做到。
我正在尝试使用新的 API 恢复它们,但它似乎不起作用。 到目前为止我所尝试的:
我在应用程序的整个生命周期内都在监听事务更新,其中:
Task.detached {
for await result in Transaction.updates {
if case let .verified(safe) = result {
}
}
}
我有一个调用此方法的按钮,但除了提示使用 Apple ID 再次登录之外,它似乎根本没有任何作用:
try? await AppStore.sync()
这不会返回任何项目
for await result in Transaction.currentEntitlements {
if case let .verified(transaction) = result {
}
}
这不会返回任何项目
for await result in Transaction.all {
if case let .verified(transaction) = result {
}
}
如前所述,我在购买商品并删除应用程序后尝试此操作。所以我确信它应该能够恢复购买。 我正在尝试在模拟器上使用 Configuration.storekit 文件,在沙盒环境中在真实设备上不使用它。
有人可以使用 StoreKit 2 恢复购买吗?
PD:我已经提交了一份关于反馈助手的反馈报告,但到目前为止他们唯一回复的是:
因为 Xcode 中的 StoreKit 测试是一个本地环境,并且数据与应用程序相关联,所以当您删除应用程序时,您也会删除该应用程序在 Xcode 环境中的所有事务数据。提供的代码 sn-ps 是 API 的正确用法。
所以是的,使用 Configuration.storekit 文件将无法恢复购买,但如果我无法在沙盒环境中恢复它们,恐怕这将无法使用一次发布,让我的用户完全无法恢复他们已经购买的东西。
【问题讨论】:
-
这个应用是iOS还是macOS?你已经标记了两者。
-
我现在正在开发一个应用程序
currentEntitlements在 iOS 上运行,并进行了试飞。我无法让它在 watchOS 上运行,但没有记录在 watchOS 上的测试,如果我再次完成购买过程,它会恢复,但这不是一个好的用户体验。我没试过 macOS。 -
@DávidPásztor 它是 iOS 和 macOS。
-
@loremipsum 对我来说,再次尝试购买会恢复以前的购买,但我同意你的看法,这是不可取的。将尝试使用 TestFlight,感谢您的指点。
标签: ios swift macos in-app-purchase storekit