2017-02-24 78 views
1

我正在使用RMStore庫用於IAP(基於訂閱),並且我在此行發生異常:[[RMStore defaultStore] requestProducts:[NSSet setWithArray:_products] success:^(NSArray * products,的NSArray * invalidProductIdentifiers){RMStore requestProducts在請求產品時會產生異常

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
_products = @[@"NEWSUB01", 
       @"NEWSUB06", 
       @"NEWSUB12"]; 
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
[[RMStore defaultStore] requestProducts:[NSSet setWithArray:_products] success:^(NSArray *products, NSArray *invalidProductIdentifiers) { 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
    _productsRequestFinished = YES; 


} failure:^(NSError *error) { 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Products Request Failed", @"") 
                 message:error.localizedDescription 
                 delegate:nil 
               cancelButtonTitle:NSLocalizedString(@"OK", @"") 
               otherButtonTitles:nil]; 
    [alertView show]; 
}]; 
} 
下面

是requestProducts功能和例外是在線:[_productsRequestDelegates ADDOBJECT:委託];

- (void)requestProducts:(NSSet*)identifiers 
      success:(RMSKProductsRequestSuccessBlock)successBlock 
      failure:(RMSKProductsRequestFailureBlock)failureBlock 
{ 
RMProductsRequestDelegate *delegate = [[RMProductsRequestDelegate alloc] init]; 
delegate.store = self; 
delegate.successBlock = successBlock; 
delegate.failureBlock = failureBlock; 
[_productsRequestDelegates addObject:delegate]; 

SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:identifiers]; 
productsRequest.delegate = delegate; 

[productsRequest start]; 
} 

相同的代碼在示例應用程序中工作,但在我的應用程序中不起作用。

回答

1

有一件事我注意到RMStore中的示例項目正在使用不可再生的IAP。對於自動再生的基於訂閱的IAP,你應該設置如下您的商店:

const BOOL iOS7OrHigher = floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1; 
_receiptVerifier = iOS7OrHigher ? [[RMStoreAppReceiptVerifier alloc] init] : [[RMStoreTransactionReceiptVerifier alloc] init]; 
[RMStore defaultStore].receiptVerifier = _receiptVerifier; 


_persistence = [[RMStoreUserDefaultsPersistence alloc] init]; 
[RMStore defaultStore].transactionPersistor = _persistence; 

使用RMStoreUserDefaultsPersistence事務的持久性,也當刷新或撥打收據它會自動根據documentation of RMStore被持久化。檢查鏈接的頁面末尾。