RMStore подтверждение офлайн-квитанции
Один вопрос об автономной проверке квитанции RMStore
( https://github.com/robotmedia/RMStore)
При запуске приложения я проверяю, есть ли у приложения действительная покупка приложения (версия PRO) (мое приложение только для iOS7)
Я делаю это так:
RMStoreAppReceiptVerificator *verificator = [[RMStoreAppReceiptVerificator alloc] init];
BOOL isValidReceipt = [verificator verifyAppReceipt];
if (isValidReceipt)
{
BOOL isProVersion = [[RMAppReceipt bundleReceipt] containsInAppPurchaseOfProductIdentifier:xxx];
...
}
У меня все еще есть версия 1.0 в App Store... Но теперь я хотел бы сделать обновление в ближайшее время... Это все еще будет работать после обновления магазина приложений, верно? В приложении все еще будет квитанция, и проверка должна пройти, верно?
Я спрашиваю, потому что тестирование внутриигровых покупок не очень легко (особенно обновление и прочее), и если что-то не получится, пользователи будут взбешены....
1 ответ
Код должен работать как прежде. Однако вы не проверяете квитанцию правильно. Цитирование руководства по программированию проверки квитанции:
Если проверка в 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;
}
Обратите внимание, что обновление квитанции делает проверку квитанции асинхронным процессом.