应用内购买适用于iOS 3和5,但不适用于iOS 4

时间:2011-10-30 16:45:22

标签: iphone ios in-app-purchase ios-4.2 storekit

我有一个问题我无法解决而且我被困住了。

我已经实现了一个应用程序内购买屏幕,问题是当我在iOS3.1.3上检查它时,它在iOS5模拟器上也能很好地工作,但是当使用iOS4时,我没有得到响应中的产品,< / p>

我正在使用的相关代码:

-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
if ([response.products count]==0) {

       // Always gets in here on iOS4....

}else{

   //get here on 3.1.3 or 5

    [productDetailsList addObjectsFromArray: response.products];
}

....

[request release];  
}

- (void)requestProductData {
for (short item_count = 1; item_count <=4 ; item_count++) {
    [productIdentifierList addObject:[NSString stringWithFormat:@"myApp.item.%d", item_count]];


}

SKProductsRequest *request = [[[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:productIdentifierList]] retain];

request.delegate = self;
[request start];
}

.h文件如下所示:

#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>

@interface viewController : UIViewController
<SKProductsRequestDelegate, SKPaymentTransactionObserver> {

NSMutableArray *productIdentifierList;
NSMutableArray *productDetailsList;
NSMutableArray *transactionHistory;

}
@property (nonatomic, retain) NSMutableArray *productIdentifierList;
@property (nonatomic, retain) NSMutableArray *productDetailsList;
@property (nonatomic, retain) NSMutableArray *transactionHistory;

- (void)requestProductData;
- (void)completeTransaction: (SKPaymentTransaction *)transaction;
- (void)restoreTransaction: (SKPaymentTransaction *)transaction;
- (void)failedTransaction: (SKPaymentTransaction *)transaction;
- (void)recordTransaction: (SKPaymentTransaction *)transaction;
- (void)provideContent: (NSString *)productIdentifier;
@end

我试图从头开始制作所有配置并且没有解决问题,也许这与内存管理有关,但我无法弄清楚是什么。

奇怪的是它适用于我的3.1.3而不是4.2.1。

请帮忙......

1 个答案:

答案 0 :(得分:0)

StoreKit API仅适用于4.2中的Device,因此您必须尝试在Device中执行它。 虽然在3.1 ios模拟器版本我没有工作,但在ios5模拟器它工作,我认为它可能是ios5模拟器的错误或他们正在尝试提供新的功能。 但是在Apple的网站上,他们提到storekit只适用于Device。

所以你只需尝试在设备上构建项目。