如何以编程方式重新下载应用内购买应用程序

时间:2010-11-16 12:52:57

标签: iphone iphone-sdk-3.0

我能够成功实施应用内购买。我也可以通过应用内购买购买产品。我将购买信息存储在NSUserDefaluts.So如果下次用户再次尝试购买相同产品我能够在本地处理它。我的问题是如果用户删除了应用程序从设备,如何处理重新下载的应用程序,而无需再次为同一产品收费。我知道,如果某个应用程序已从已购买应用程序的设备中删除,则必须再次下载。任何人都可以显示样本代码相同吗?

由于 阿迪亚

您好 感谢您的快速回复。我已按照您的建议实施。我想知道的是,如果我删除我的应用并再次安装,我被要求再次购买。我必须再次支付升级或它是从苹果服务器处理的(即如果我再次升级同一产品,我再次收费吗?)。有没有办法知道它升级而没有要求再次升级?

2 个答案:

答案 0 :(得分:6)

StoreKit api负责处理此事,并根据要求提供所购商品的标识符列表。一旦你有了这些,你可以再次重新下载产品(如果还没有捆绑在应用程序中)。

摘自StoreKit API帮助:

  

-(void)restoreCompletedTransactions

     

要求付款队列恢复以前完成的购买。

     

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

     

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

     

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

答案 1 :(得分:1)

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

//重新安装App:

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

// NSUserDefaults是否有购买历史记录??? -

// YES:加载剩余待售物品的表格视图,其他 -

// NO:从Apple

获取restoreCompletedTransactions列表

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

//全新的App安装:

//当用户进行第一次IAP时。将其添加到容器和NSUserDefaults

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