2013-02-07 38 views
1

我简单地“paymentWithProductIdentifier”已过时

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

问题的问题是,paymentWithProductIdentifier已被弃用。 我,我可以使用

paymentWithProduct 

在互联网上找到,但问题是,我不知道怎么去SKProduct。

我写了这样的事情:

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

但它不工作。 问题在哪里?

在此先感谢。

回答

2

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

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

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

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

+0

那么,我在那里的一切。我只是在有问题的地方展示了代码。 – Ganjira

+0

如果你有这一切,那么为什么你使用paymentWithProductIdentifier:而不是paymentWithProduct:? – DrC