首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RMStore requestProducts在请求产品时出现异常

RMStore requestProducts在请求产品时出现异常
EN

Stack Overflow用户
提问于 2017-02-24 16:09:19
回答 1查看 231关注 0票数 1

我正在为IAP使用RMStore库(基于订阅),并在以下行遇到异常:[RMStore defaultStore requestProducts:NSSet setWithArray:_products success:^(NSArray *products,NSArray *invalidProductIdentifiers) {

代码语言:javascript
复制
- (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];
}];
}

下面是委派函数,异常发生在第:_productsRequestDelegates addObject: requestProducts;

代码语言:javascript
复制
- (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];
}

相同的代码在示例应用程序中有效,但在我的应用程序中不起作用。

EN

回答 1

Stack Overflow用户

发布于 2017-03-10 19:53:30

我注意到RMStore中的示例项目使用了不可更新的IAP。对于基于IAP的自动续订订阅,您应该按如下方式设置您的商店:

代码语言:javascript
复制
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自动持久化。在页面末尾的链接处进行检查。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42433636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档