2011-10-12 2215 views
22

我不太明白这个想法。 我必须为用户提供还原按钮吗? 这个方法应该调用什么方法? 恢复将会做什么?应用内购买中的“恢复购买”是什么意思?

+3

基本上,如果你删除的应用,移动到一个新的手机,无论如何,您的购买将不再在该设备上可用。还原购买会向iTunes询问您已付款的可用应用内购买项目。你应该提供一个恢复按钮,我不确定是否需要它,但它肯定是建议的。您应该阅读应用程序购买中的文档,以便更清楚地了解购买/恢复事务的哪一部分是您的责任,哪一部分是Apple的责任。 –

+1

我不是iPhone的专家,但从使用经验,如果你有应用内购买,这种方法应该恢复用户从你的应用购买的所有东西,当然你会用他们是苹果ID /帐户识别。 – 2011-10-12 09:50:08

回答

29

您通常使用此代码恢复购买:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

它将观察者(个),所购买的物品重新调用-paymentQueue:updatedTransactions。这对删除后重新安装应用程序或将其安装在其他设备上的用户非常有用。

并非所有类型的应用内购买都可以恢复。

+0

是不是有类似的应用程序重购?它不是提示类似的“你已经购买,所以你可以免费下载”?我没有这样的经历。 – Geri

+1

为了向用户提供这种体验,应用开发人员不需要实现这一点 - 但它相当简单(只需一行代码)。 – Felix

+0

当用户没有进行任何购买时,我无法捕获任何委托方法,并命中恢复。商店得到处理,但在这种情况下没有方法被调用(只有paymentQueueRestoreCompletedTransactionsFinished :,但它也会在成功恢复时被调用)。所以现在怎么办?我会为此设置一个问题。 – Geri

2

它是可选功能。

如果在用户尝试购买非易失性产品时您不提供它,AppStore将恢复旧的事务。但是你的应用会认为这是新的交易。

如果您将提供恢复机制,那么您的采购经理将看到恢复的交易。

如果应用程序应该区分这个选项,那么您应该提供恢复以前购买的产品的功能。

+0

这不是应用程序商店应该处理的内容吗? – 2011-10-12 09:53:26

+0

AppStore处理这个问题,正如我在文章中所说的那样。应用只会看到不同类型的交易。 – Nekto

+0

是不是有类似的应用程序重购?它不是提示类似的“你已经购买,所以你可以免费下载”?我没有这样的经历。 – Geri

6

仅当您已注册inApp购买的产品可能属于非续订订购和易损件产品类别时,您才会收到来自苹果的拒收讯息。这些类型的产品不会自动更新。你需要在你的应用程序中有明确的恢复按钮。

对于其他类型的产品它会自动恢复它。

请阅读下面的文字,这将清楚这一点你的概念:

一旦交易已被处理,并从队列中删除,你 应用程序通常不会再看到它。但是,如果您的应用程序 支持必须可恢复的产品类型,则必须包含一个允许用户恢复这些购买的界面 。该接口 允许用户将产品添加到其他设备,或者如果原始设备被擦除,则恢复原始设备上的事务。

Store Kit提供了内置功能,用于恢复 非消耗品,自动更新订阅和免费订阅 的交易。要恢复交易,您的应用程序将调用 付款队列的restoreCompletedTransactions方法。支付队列 向App Store发送请求以恢复事务。在 返回中,App Store为以前完成的每个 事务生成一个新的恢复事务。恢复事务 对象的originalTransaction属性包含原始的 事务的副本。您的应用程序会通过 处理恢复交易,并检索原始交易并使用它来解锁购买的内容。 Store Kit恢复之前的所有事务 后,它会通过调用付款队列观察员的 paymentQueueRestoreCompletedTransactionsFinished:方法通知付款队列观察员。

如果用户尝试(使用你实现的恢复界面,而不是 )购买可恢复的产品,应用程序接收 一个普通的事务针对该项目,而不是恢复交易。 但是,用户不会再为该产品付费。您的 应用程序应将这些交易视为原始交易的 。不更新订阅和消耗品 产品不会被Store Kit自动恢复。但是,不更新 订阅必须是可恢复的。要恢复这些产品, 您必须在自己的服务器上记录交易时,他们 购买,并提供自己的机制,以恢复这些交易 到用户的设备

+0

您是否知道在以下情况下不需要恢复时会发生什么情况: 用户能够在他的设备上下载应用程序,并且该应用程序可以通过使用不同的凭证登录来使用多个用户。如果用户Bill使用他的凭证登录并购买仅为其凭据购买的应用程序。如果后者乔用他的凭据登录,他应该再次购买。如果Bill登录任何其他设备,他应该可以享受完整的应用程序。应用功能取决于服务器返回的数据,而不是其他资产。 谢谢! – zvjerka24

+0

@ zvjerka24 - 是非常相同我想在我的应用程序,然后我必须使用什么IAP? – 2014-02-03 06:27:24