使用RMStore (https://github.com/robotmedia/RMStore)进行离线收据验证的一个问题
在App上,我检查应用程序在应用程序购买中是否有效(我的应用程序仅为iOS7 )。
我就是这样做的:
RMStoreAppReceiptVerificator *verificator = [[RMStoreAppReceiptVerificator alloc] init];
BOOL isValidReceipt = [verificator verifyAppReceipt];
if (isValidReceipt)
{
BOOL isProVersion = [[RMAppReceipt bundleReceipt] containsInAppPurchaseOfProductIdentifier:xxx];
...
}应用商店里还有1.0版..。但现在我想尽快更新一下..。在应用程序商店更新之后,这仍然有效,对吗?该应用程序仍然有收据在那里和验证仍然应该通过,对吗?
我问是因为测试应用程序内的购买并不容易(特别是更新和其他东西),如果某些东西失败了,用户会很生气.
发布于 2014-05-21 14:48:23
代码应该像以前一样工作。但是,您没有正确地验证收据。引用收据验证程序设计指南
如果验证在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;
}注意,刷新收据使收据验证成为一个异步进程。
https://stackoverflow.com/questions/23786157
复制相似问题