Отслеживание автообновляемых подписок на журналы - PullRequest
1 голос
/ 26 сентября 2011

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 09 сентября 2014

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

(ИЛИ)

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 в ваш проект и установите делегат верификатора (receiveVerificator) при запуске. Например:

  - (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 для покупок в приложении

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

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

0 голосов
/ 07 марта 2012

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

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

...