2

アプリにアプリ内購入を実装することはできましたが、製品をリクエストする際に問題が発生しています。ストアから返された製品の順序が、ID リストの順序と一致しません。次のコードの製品をリクエストしています:

self.request = [[[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObjects: @"50Hints",@"120Hints",@"250Hints",@"400Hints", nil]] autorelease];
    //NSLog(@"Sending request...");
    request.delegate = self;
    [request start];

製品のリストを次のように受け取ります。

the products (
    "<SKProduct: 0xc660bb0>",
    "<SKProduct: 0xc661110>",
    "<SKProduct: 0xc661160>",
    "<SKProduct: 0xc6611b0>"
)

これは同じ順序ではありません (最初のものは @"50Hints" ではなく @"120Hints" に対応します)

[SKPayment paymentWithProductIdentifier:productIdentifier] (productIdentifier は製品の名前に対応する文字列) を使用できるため、IOS 5 より前は問題ありませんでしたが、現在は製品を受け入れる paymentWithProduct を使用する必要があります (例: SKProduct: 0xc660bb0)。名前。だから私はどれがどれであるかを見つけなければなりません。

paymentWithProduct を使用して、その名前を使用して製品を購入する方法はありますか? そうでない場合、アプリ内購入の順序はランダムに変更されますか、それとも永続的ですか?

乾杯みんなシリル

4

1 に答える 1

0

The way I've done this is to use the properties of the SKProduct, some of which I display in a table for the user to choose from -- one of the columns has the product identifier displayed. This was done for a OSX project, but the concept should be the same.

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
    self.productsFromItunes = [NSMutableArray array];
    for(SKProduct *aProduct in response.products){
        NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:aProduct,@"theProduct",aProduct.price,@"thePrice",aProduct.localizedTitle,@"theTitle",aProduct.productIdentifier,@"theID",nil];
        [self.productsFromItunes addObject:dict];
    }
    [NSBundle loadNibNamed:@"BuyCredits" owner:self];
    [self.buyCreditsWindow makeKeyAndOrderFront:self];// this window has the table of choices
}

// Connected to the "Purchase" and "Cancel" buttons in the Buy Credits window
-(IBAction)buyOrCancel:(NSButton *)sender {
    if ([sender.title isEqualToString:@"Purchase"]){
        SKProduct *chosenProduct = [self.buyCreditsController.selectedObjects.lastObject valueForKey:@"theProduct"];
        SKPayment *thePayment = [SKPayment paymentWithProduct:chosenProduct];
        [SKPaymentQueue.defaultQueue addPayment:thePayment]; // This method sends the buy request to the app store
    }
    [self.buyCreditsWindow orderOut:self];
}
于 2012-07-19T01:04:48.840 に答える