刷新收据是否要求提供 App Store 凭据?

Does refreshReceipt ask for AppStore credentials?

我一直在测试示例应用中 iOS 的应用内购买。我需要弄清楚是否可以在发布时立即致电 refreshReceipt API 以检查用户是否有资格获得某些试用期订阅等。

我在 AppDelegate 的 application:didFinishLaunching:options 方法中调用了 refreshReceipt,但它要求我提供 AppStore 凭据,基本上是 Sandbox 用户的密码。我没想到会出现这种从 Apple 文档中读取的行为。它是由于沙箱环境而发生的,还是在生产环境中也发生的。

此外,Restore Purchase 是否会触发 AppStore 登录警报。 Apple 文档说可以,但最近我看到 phone 上的一个音乐应用程序在我选择该选项时没有要求提供凭据。可能是他们没有调用 StoreKit 的 restorePurchase API,而是使用他们自己的机制。

只要设备上没有收据,您就会收到登录提示。在沙盒中,没有安装收据,因此您总是会看到弹出窗口。您还应该注意到收据在沙盒中刷新后仍然不存在,除非您进行了购买。

如果用户登录到他们的 iTunes 帐户,收据应该在生产中始终存在。

对于恢复,我假设它遵循相同的逻辑(如果收据不存在则要求提示)但这与 Apple 所说的相矛盾。