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

Posted

技术标签:

【中文标题】应用内购买适用于 iOS 3 和 5,但不适用于 iOS 4【英文标题】:In-App purchase works on iOS 3&5 but not on iOS 4 【发布时间】:2011-10-30 16:45:22 【问题描述】:

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

我已经实现了一个应用内购买屏幕,问题是当我在 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 安装新程序之前,我的程序版本。 (本例中的Previous是指Storekit实施之前的版本) 【参考方案1】:

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

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

【讨论】:

这不再完全正确。我可以在 iOS 5.0 模拟器上从 Apple 获取和购买产品,但在 iOS 4 上不行。

以上是关于应用内购买适用于 iOS 3 和 5,但不适用于 iOS 4的主要内容,如果未能解决你的问题,请参考以下文章

Open in... 自定义文件类型适用于 iOS 5、6 和 7,但不适用于 iOS 4

iOS 应用内购买不适用于真实账户,但可以使用沙盒

UITabBar 外观适用于 iOS6 但不适用于 iOS 5

NSTimer - 适用于 iOS 10 但不适用于 iOS 9.3

如何在没有 Mac 的情况下启用应用内购买

应用内购买测试在 IOS 4.01 上失败,适用于 iOS 5+