我有一个无法解决的问题,被困住了。
我已经实现了一个应用内购买屏幕,问题是,当我在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/