我有一个无法解决的问题,被困住了。

我已经实现了一个应用内购买屏幕,问题是,当我在iOS3.1.3上进行检查时,它也可以在iOS5模拟器上正常运行,但是在使用iOS4时,我没有得到响应,也没有产品,

我正在使用的相关代码:

-(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。

请帮忙...

最佳答案

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

因此,您只需尝试在设备上构建项目即可。

关于iphone - 应用内购买适用于iOS 3&5,但不适用于iOS 4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7946272/

10-13 04:56