2

我已设法在我的应用中实现应用内购买,但在请求产品时遇到了一些问题。从商店返回的产品顺序与我的标识符列表的顺序不匹配。我要求使用以下代码的产品:

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>"
)

这不是相同的顺序(第一个对应于@“120Hints”而不是@“50Hints”)

在 IOS 5 之前这不是问题,因为我可以使用 [SKPayment paymentWithProductIdentifier:productIdentifier],productIdentifier 是与产品名称对应的字符串,但现在我必须使用 paymentWithProduct 接受产品(例如 SKProduct: 0xc660bb0)而不是名字。所以我必须找出哪个是哪个。

有没有办法通过使用 paymentWithProduct 使用其名称购买产品?如果不是,应用内购买的顺序是随机改变还是永久改变?

干杯伙计西里尔

4

1 回答 1

0

我这样做的方法是使用 SKProduct 的属性,其中一些我显示在表格中供用户选择——其中一列显示了产品标识符。这是为 OSX 项目完成的,但概念应该是相同的。

- (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 回答