在应用程序中,我需要实现自动更新订阅购买。据我了解文档,我应该在应用启动时检查 AppStore 收据,然后使用我的服务器验证该收据。在我的代码中,我执行以下操作来检索收据:
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
有时receipt
是零。例如:
- 我已经启动了一个应用程序并进行了购买。之后,上面的代码返回非空
receipt
。 - 应用程序被 Xcode 停止。
- 在下一个应用程序启动时
receipt
为零。
我不明白,为什么会这样。receiptURL
指向带有收据的文件,但[NSData dataWithContentsOfURL:receiptURL]
返回 nil。
如果我请求刷新收据,则应用程序会显示用于输入 iTunes 凭据的对话框。这不好,因为此对话框将在应用启动时出现,这是意外行为。
难道我做错了什么?或者这可能是特定于沙盒的案例?