'paymentWithProductIdentifier'已弃用

时间:2013-02-07 01:18:51

标签: iphone in-app-purchase

我有

的问题
SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"ident"];

问题是不推荐使用paymentWithProductIdentifier。 我在互联网上发现我可以使用

paymentWithProduct

但问题是我不知道如何获得SKProduct。

我写了这样的话:

SKProductsResponse *response;
SKProduct *validProduct = [response.products objectAtIndex:0];
SKPayment *payment = [SKPayment paymentWithProduct:validProduct];

但它不起作用。 问题在哪里?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您的代码使用*响应而不初始化 - 这是当前的问题。

但是,更大的问题是获取SKProduct对象。这里的基本方法是,在向用户提供购买项目的能力之前,您需要将请求放入App Store以检索您可能想要向用户显示的SKProduct对象。每个SKProduct都包含您需要向用户显示的本地化价格和描述信息。我构建我的代码以在进入购买屏幕时检索产品数组。根据您的应用程序,您可能需要提前调用它。

您可以从可购买商品列表的skus开始。然后使用该组skus(SKProductsRequest initWithProductIdentifiers :)创建一个SKProductsRequest对象。此外,提供SKProductsRequestDelegate以接收响应。然后启动请求。当它使用didReceiveResponse:调用委托时,您可以将数组保存在包含SKProduct对象的响应中。它还会返回您无法向用户显示的无效产品列表。仅显示您在回调中收到SKProduct对象的项目。

当实际启动付款时,您从传递到SKProductsRequestDelegate didReceiveResponse:方法的数组中提取正确的SKProduct对象以创建付款对象。