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オブジェクトの取得です。ここでの基本的な方法は、アイテムを購入する機能をユーザーに提示する前に、ユーザーに表示したいSKProductオブジェクトを取得するためにAppStoreにリクエストを送信する必要があるということです。各SKProductには、ユーザーに提示する必要のあるローカライズされた価格と説明の情報が含まれています。購入画面に入るときに製品配列を取得するようにコードを構成します。アプリによっては、早めに呼び出す必要がある場合があります。

まず、購入可能なアイテムのリストのSKUから始めます。次に、そのskusのセット(SKProductsRequestinitWithProductIdentifiers:)を使用してSKProductsRequestオブジェクトを作成します。また、応答を受信するためにSKProductsRequestDelegateを提供します。次に、リクエストを開始します。didReceiveResponse:を使用してデリゲートを呼び出す場合、SKProductオブジェクトを含む応答に配列を保存できます。また、ユーザーに提示できない無効な製品のリストも返します。コールバックでSKProductオブジェクトを受け取ったアイテムのみを提示します。

実際に支払いを開始するときは、SKProductsRequestDelegate didReceiveResponse:メソッドに渡された配列から正しいSKProductオブジェクトをプルして、支払いオブジェクトを作成します。

于 2013-02-07T01:37:42.393 に答える