2

我只是有问题

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

问题是 paymentWithProductIdentifier 已被弃用。我在网上找到可以使用的

paymentWithProduct

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

我写了这样的东西:

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

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

提前致谢。

4

1 回答 1

2

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

然而,更大的问题是获取 SKProduct 对象。这里的基本方法是,在向用户展示购买商品的能力之前,您需要向 App Store 发出请求以检索您可能希望向用户展示的 SKProduct 对象。每个 SKProduct 都包含您需要呈现给用户的本地化价格和描述信息。我构建我的代码以在进入购买屏幕时检索产品数组。根据您的应用,您可能需要提前调用它。

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

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

于 2013-02-07T01:37:42.393 回答