首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RMStore离线收据验证

RMStore离线收据验证
EN

Stack Overflow用户
提问于 2014-05-21 14:27:22
回答 1查看 2.2K关注 0票数 3

使用RMStore (https://github.com/robotmedia/RMStore)进行离线收据验证的一个问题

在App上,我检查应用程序在应用程序购买中是否有效(我的应用程序仅为iOS7 )。

我就是这样做的:

代码语言:javascript
复制
RMStoreAppReceiptVerificator *verificator = [[RMStoreAppReceiptVerificator alloc] init];
BOOL isValidReceipt = [verificator verifyAppReceipt];
if (isValidReceipt)
{
    BOOL isProVersion = [[RMAppReceipt bundleReceipt] containsInAppPurchaseOfProductIdentifier:xxx];
    ...
}

应用商店里还有1.0版..。但现在我想尽快更新一下..。在应用程序商店更新之后,这仍然有效,对吗?该应用程序仍然有收据在那里和验证仍然应该通过,对吗?

我问是因为测试应用程序内的购买并不容易(特别是更新和其他东西),如果某些东西失败了,用户会很生气.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-21 14:48:23

代码应该像以前一样工作。但是,您没有正确地验证收据。引用收据验证程序设计指南

如果验证在iOS中失败,请使用SKReceiptRefreshRequest类刷新收据。

使用RMStore,看起来如下所示:

代码语言:javascript
复制
const BOOL verified = [self verifyReceiptWithCustomLogic];
if (verified)
{
    // Verification succeeded
} 
else 
{ // Apple recommends to refresh the receipt if validation fails on iOS
    [[RMStore defaultStore] refreshReceiptOnSuccess:^{
        const BOOL verified = [self verifyReceiptWithCustomLogic];
        if (verified)
        {
            // Verification succeeded
        }
        else
        {
            // Verification failed
        }
    } failure:^(NSError *error) {
            // Verification failed
    }];
}

其中,您的验证逻辑似乎是:

代码语言:javascript
复制
- (BOOL)verifyReceiptWithCustomLogic
{
    RMStoreAppReceiptVerificator *verificator = [RMStoreAppReceiptVerificator new];
    if ([verificator verifyAppReceipt])
    {
        return [[RMAppReceipt bundleReceipt] containsInAppPurchaseOfProductIdentifier:xxx];
    }
    return NO;
}

注意,刷新收据使收据验证成为一个异步进程。

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

https://stackoverflow.com/questions/23786157

复制
相关文章

相似问题

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