2010-11-16 24 views
1

我能够成功实施应用内购买。我也可以通过应用程序purchase.I存储购买信息在NSUserDefaluts.So如果下次用户再次尝试购买同样的产品我能够在本地处理它。我的问题是,如果用户删除应用程序从设备,我如何处理重新下载的应用程序,而不再收取同样的产品再次。我知道,如果一个应用程序已被删除从应用程序购买的设备,它必须再次下载。可以任何人显示示例代码相同?如何以编程方式重新下载应用内购买应用

感谢 阿迪亚

嗨 感谢提示reply.I已经实现了和你一样有suggested.What我想知道是,如果我删除我的应用程序,并重新安装,我被要求购买它再次。我必须再次支付升级或是从苹果服务器处理(即如果我再次升级相同的产品,我再次收费?)。有没有办法知道它升级而不要求再次升级?

+0

不,您不需要再次支付升级费用。相反,在第一次启动时,您应该调用我指出的方法,从Apple获取用户先前购买的清单。该列表存储在Apple的服务器上;删除/重新安装应用程序不会影响此列表,因此您应该依赖它。 – Alex 2010-11-17 19:19:37

+0

换句话说,您可以处理这个问题的方式是: - 在应用程序启动时,查看游戏中是否还有任何物品需要购买;如果是,则尝试从Apple获取restoreCompletedTransactions列表并升级这些项目。这样,您可以同时处理应用程序删除/重新安装以及多个共享设备上的应用程序使用情况(您知道一个应用程序最多可用于同一iTunes用户帐户的5台设备)。 – Alex 2010-11-17 19:20:24

+0

你能否详细解释一下你的答案?我得到了你想说的,但如果你能详细解释一下就会很好。 – Aditya 2010-11-18 05:11:53

回答

6

StoreKit api负责处理此问题,并根据请求向您提供所购物品的标识符列表。一旦你得到了这些,你就可以重新下载产品(如果不是已经捆绑在应用程序中)。从StoreKit API帮助

摘录:

-(void)restoreCompletedTransactions

询问支付队列恢复以前完成购买。

您的应用程序调用此方法来恢复先前完成的事务,以便您可以再次处理它们。例如,您的应用程序会使用它来允许用户将以前购买的内容解锁到新设备上。

当您在商店中创建要出售的新产品时,请选择是否可以恢复该产品。有关更多信息,请参阅In App Purchase编程指南。

付款队列将为每个可以恢复的每个先前完成的交易提供新的交易。每笔交易都包含原始交易的副本。

1

////评论伪代码////

//重新安装应用程序:

//恢复已经购买交易...

//是否有NSUserDefaults的对购买历史? -

// YES:加载其余出售,否则项目的表视图 -

// NO:从苹果

获取restoreCompletedTransactions列表

//并创建一个容器来保存以前的购买交易。

//全新的应用安装:

//当用户创建第一个IAP时。添加到容器和NSUserDefaults

//当至少进行一次购买时,此容器将被添加到NSUserDefaults。