iOS 应用内购买收据与不同的 iTunes 用户

Posted

技术标签:

【中文标题】iOS 应用内购买收据与不同的 iTunes 用户【英文标题】:iOS in app purchase receipt with different itunes user 【发布时间】:2015-02-01 15:15:55 【问题描述】:

我在设备上本地使用收据验证并针对 ios 7+

我正在沙盒环境中测试应用购买中的自动续订订阅,我注意到了这种情况。

-用户 A 在设备上登录 iTunes 帐户,在应用中购买订阅,获得应用收据。 - 用户 A 在设备上注销 iTunes 帐户,用户 B 登录 - 用户 B 启动应用程序 - 用户 B 将继续使用用户 A 的订阅,因为 [[NSBundle mainBundle] appStoreReceiptURL] 有效,并将返回用户 A 的收据。

为什么不返回用户B的收据?

【问题讨论】:

“发送”是什么意思? 抱歉,我想问的是,为什么用户 B 的收据没有从 [[NSBundle mainBundle] appStoreReceiptURL] 而不是用户 A 的返回。 我不明白为什么收据应该改变。 appStoreReceiptURL 返回对文件的引用。为什么要更改该文件?这就是说,是的,用户使用多个 Apple ID/iTunes 帐户确实会带来复杂性。比如说,如果用户 B 现在进行购买怎么办。使用 Apple 官方方法完成的恢复基于 Apple ID。因此,恢复只会恢复用户 A 或用户 B 的购买。两者都不是。 对,如果我恢复用户 A 或 B,我将分别获得他们的收据,但前提是我进行恢复。我的问题是基于我上面的场景,如果用户 A 注销并且用户 B 登录,我不会在我的应用程序中知道这一点。我想知道这一点,然后我可以提示刷新收据。 我认为你不会知道这一点。 Apple 会对您隐藏 Apple ID。除非您在应用启动时每次都进行恢复。但这对用户来说会很烦(输入密码),我不知道您是否必须根据购买来下载资产。 【参考方案1】:

必须刷新收据。

    SKReceiptRefreshRequest *request = [[SKReceiptRefreshRequest alloc] init];
    request.delegate = self;
    [request start];

【讨论】:

以上是关于iOS 应用内购买收据与不同的 iTunes 用户的主要内容,如果未能解决你的问题,请参考以下文章

iOS 测试应用收据验证

应用内购买验证收据错误

iOS中应用内购买的服务器端验证最佳实践

从 iOS 应用内购买收据中检索订单 ID/文件编号

尽管没有iTunes帐户登录,iOS仍会恢复应用内购买

区分应用内 iTunes 的产品