2011-08-11 7 views
9

アプリの購入のためのサンプルアプリを作成しています。私は1つの製品を実装しました。次のコードを使って1つの製品の購入を実装することができましたが、複数の製品があると仮定すると、利用可能なすべての製品のすべての識別子のリストを取得できます。私はその質問にはっきりしていることを願っています。アプリの購入のすべての識別子を取得する方法

以下のコードを以下のように1つの製品に使用しました。

- (void)viewDidLoad { 
[super viewDidLoad]; 


if ([SKPaymentQueue canMakePayments]) { 
     NSLog(@"Parental-controls are disabled"); 

     SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"com.companion.onemonth"]]; 
     productsRequest.delegate = self; 
     [productsRequest start]; 
    } else { 
     NSLog(@"Parental-controls are enabled"); 
     //com.companion.onemonth ; 
    } 
} 


    - (IBAction)purchase { 
    SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"com.companion.onemonth"]; 
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
    [[SKPaymentQueue defaultQueue] addPayment:payment]; 
} 

このコードでは、1つの製品を取得できますが、実行時に複数の識別子を取得する方法はわかりません。

答えて

6

へのリンクを示し図式リファレンスを参照してくださいSKProductsRequestのNSSetにハードすべてのあなたの定義された製品を入れてください:

[NSSet setWithObjecta:@"com.companion.onemonth", @"com.companion.twomonth"], nil

と、デリゲートメソッドで使用可能な製品のNSArrayが得られます。

(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response; 

SKProductsResponseには、お客様の製品の配列があります。

14

アップルでは、​​アプリで使用できるすべてのinapp製品を取得する方法を提供していません。彼らは彼らの文書でこれを言及しています。私たちのアプリでこれをハードコードするか、別のAPI呼び出しを使用して製品のリストを返すかのいずれかです。

IDのリストがあれば、すべての製品の詳細を1回のAPI呼び出しで取得できます。

参考:http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/APIOverview/OverviewoftheStoreKitAPI.html#//apple_ref/doc/uid/TP40008267-CH100-SW11

"開発サーバ"

+1

つまり、Appleに製品のリストを尋ねる代わりに、あなたは現在利用可能と思われる製品識別子のリストを伝えます。アップルはそれらのうちどれが有効であり、どちらではないかを教えてくれる。 –

関連する問題