在购买应用程序时出现iTune问题!

时间:2011-03-12 01:31:53

标签: iphone ios4 in-app-purchase

我正在我的应用中设置应用内购买系统。我在iTune connect上注册了应用内购买。这是我的代码:

这是请求产品信息的代码:

- (void) requestProductData {   
    SKProductsRequest *request= 
        [[[SKProductsRequest alloc] initWithProductIdentifiers: 
         [NSSet setWithObject:@"com.myapp.id"]] autorelease];
    request.delegate = self;
    [request start];
}

这是接收产品信息的代码: (基本上我什么也没做,只是试着打印出来)

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
    NSArray *myProduct = response.products;
    SKProduct *product = [myProduct objectAtIndex:0];
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [numberFormatter setLocale:product.priceLocale];
    NSString *formattedString = [numberFormatter stringFromNumber:product.price];
    [numberFormatter release];
    NSLog(@"Product 0 : %@, %@, %@, %@, %@", product.productIdentifier, product.localizedDescription, product.localizedTitle, product.priceLocale.localeIdentifier, formattedString);
    [request autorelease];
}

我已经申请了代表:

@interface StoreObserver : NSObject <SKProductsRequestDelegate>{

我使用了一个按钮来触发requestProductData。通过使用断点,我确信它被调用了。但是,productsRequest从未被调用过。我也确保了连接性。

有人有任何线索吗?

2 个答案:

答案 0 :(得分:2)

你跳过了我猜的部分内容

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

答案 1 :(得分:0)

事实证明问题在于:

- (void) requestProductData {   
    SKProductsRequest *request= 
        [[[SKProductsRequest alloc] initWithProductIdentifiers: 
         [NSSet setWithObject:@"com.myapp.id"]] autorelease]; //<- here
    request.delegate = self;
    [request start];
}

您永远不应该自动发布SKProductsRequest。我犯这个错误真是太蠢了。