3

RMStore( https://github.com/robotmedia/RMStore )を使用したオフラインの領収書の確認について 1 つの質問

アプリの起動時に、アプリに有効なアプリ購入(PROバージョン)があるかどうかを確認します(私のアプリはiOS7のみです)

私はそのようにします:

RMStoreAppReceiptVerificator *verificator = [[RMStoreAppReceiptVerificator alloc] init];
BOOL isValidReceipt = [verificator verifyAppReceipt];
if (isValidReceipt)
{
    BOOL isProVersion = [[RMAppReceipt bundleReceipt] containsInAppPurchaseOfProductIdentifier:xxx];
    ...
}

私はまだ App Store にバージョン 1.0 を持っています... でも、すぐにアップデートしたいのですが... これは、App Store のアップデート後も動作しますよね? アプリにはまだレシートが残っているので、検証はパスするはずですよね?

アプリ内購入のテストは本当に簡単ではなく (特に更新など)、何かが失敗するとユーザーが腹を立てるのでお願いします....

4

1 に答える 1

4

コードは以前と同じように機能するはずです。ただし、領収書を正しく検証していません。Receipt Validation Programming Guideの引用:

iOS で検証が失敗した場合は、SKReceiptRefreshRequestクラスを使用して領収書を更新します。

RMStore を使用すると、次のようになります。

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
    }];
}

検証ロジックが表示される場所:

- (BOOL)verifyReceiptWithCustomLogic
{
    RMStoreAppReceiptVerificator *verificator = [RMStoreAppReceiptVerificator new];
    if ([verificator verifyAppReceipt])
    {
        return [[RMAppReceipt bundleReceipt] containsInAppPurchaseOfProductIdentifier:xxx];
    }
    return NO;
}

領収書を更新すると、領収書の検証が非同期プロセスになることに注意してください。

于 2014-05-21T14:48:23.537 に答える