Отслеживание автоматически возобновляемых подписок на журналы

Я пытаюсь реализовать автообновляемые подписки, но что-то мне не очень понятно.

Если у меня есть, например, приложение, похожее на журнал, и я хочу отслеживать подписки, даже если они сейчас недействительны, должен ли я сохранять квитанции в своем приложении (например, Core Data)? Я должен отслеживать их все, потому что я должен предоставить пользователю доступ к старым проблемам, даже если подписка недействительна. Так что либо он имеет код состояния 0 или 21006.

Другой вопрос заключается в том, почему Apple использует код состояния 21006 для отмененных подписок, которые были отменены Apple, например, из-за того, что кто-то по ошибке сделал подписку. Как я могу определить, произошло ли это, если я знаю только, что сейчас это недействительно? Он также может быть признан недействительным, поскольку срок действия подписки истек. У меня есть эта информация из видео WWDC 2011 в iTunes U.

Любая помощь будет оценена ;-)


person MoFuRo    schedule 26.09.2011    source источник


Ответы (2)


Apple рекомендует хранить и проверять все квитанции на своем сервере, а не обязательно в приложении. Чтобы проверить статус чьей-либо подписки, просто проверьте все квитанции, которые вы сохранили для этого пользователя. (это должна быть квитанция из той же группы подписки). Затем Apple ответит последней квитанцией в этой подписке. Вы можете использовать эту информацию, чтобы предоставить пользователю все выпуски журнала до истечения срока действия квитанции. Вы можете сделать все это в приложении, если хотите, но Apple не одобряет это, поскольку вам придется хранить подтверждение iTunes secret в самом приложении.

Что касается вашего второго вопроса, я предполагаю, что Apple считает возмещение нестандартным. Поэтому они не хотят идти на какие-либо уступки. Они не хотят делать это проще или автоматизировать. Вот почему вы не получаете специальный код, который означает, что подписка пользователя была отменена в связи с возвратом средств. Я надеюсь, что это достаточно редкое явление, и простое бесплатное предоставление журнальных статей пользователям, получившим возмещение, не разорит вас. (и, поскольку проверка вашей квитанции покажет, что их учетная запись не продлевается, вам не нужно давать им новые выпуски).

person Andrew    schedule 07.03.2012

Apple рекомендует хранить и проверять все квитанции на своем сервере.

(OR)

RMStore делегирует сохранение транзакций и предоставляет две необязательные эталонные реализации для хранения транзакций в цепочке ключей или в NSUserDefaults. Вы можете реализовать свою транзакцию, использовать эталонные реализации, предоставленные библиотекой, или, в случае нерасходуемых и автоматически возобновляемых подписок, получать транзакции непосредственно из квитанции.

  -(void) startProductPurchase{

 [[RMStore defaultStore] requestProducts:[NSSet setWithArray:_products] success:^(NSArray   *products, NSArray *invalidProductIdentifiers) {

    _productsRequestFinished = YES;
    NSLog(@"Product Request Finished");
    [self buyApplication:products];
   } failure:^(NSError *error) {

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Products Request Failed", @"")
                                                        message:error.localizedDescription
                                                       delegate:nil
                                              cancelButtonTitle:NSLocalizedString(@"OK", @"")
                                              otherButtonTitles:nil];
    [alertView show];
   }];

Уведомления об обновлении квитанций (только для iOS 7+)

 - (void)storeRefreshReceiptFailed:(NSNotification*)notification;
 {
 NSError *error = notification.rm_storeError;
}

 - (void)storeRefreshReceiptFinished:(NSNotification*)notification { }

Проверка получения

RMStore по умолчанию не выполняет проверку получения, но предоставляет эталонные реализации. Вы можете реализовать свою собственную проверку или использовать эталонные верификаторы, предоставляемые библиотекой.

Оба варианта описаны ниже. Для получения дополнительной информации посетите вики.

Справочные верификаторы

RMStore обеспечивает проверку получения с помощью RMStoreAppReceiptVerificator (для iOS 7 или более поздней версии) и RMStoreTransactionReceiptVerificator (для iOS 6 или более ранней версии). Чтобы использовать любой из них, добавьте соответствующие файлы из RMStore/Optional в свой проект и установите делегат верификатора (receiptVerificator) при запуске. Например:

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
  const BOOL iOS7OrHigher = floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1;
_receiptVerificator = iOS7OrHigher ? [[RMStoreAppReceiptVerificator alloc] init] : [[RMStoreTransactionReceiptVerificator alloc] init];
[RMStore defaultStore].receiptVerificator = _receiptVerificator;
// Your code
return YES;
 }

Для получения более подробной информации перейдите по ссылкам ниже.

Покупки в приложении для iOS – это просто

Облегченная библиотека iOS для встроенных покупок

Добро пожаловать.

Надеюсь вам поможет..............

person Lova    schedule 09.09.2014