SKReceiptRefreshRequest спрашивать пароль каждый раз - PullRequest
0 голосов
/ 07 января 2020

Я использую SKReceiptRefreshRequest для подтверждения получения с сервера. Проблема в том, что он спрашивает меня каждый раз, когда запрашивается пароль. Может кто-нибудь помочь предложить мне лучший способ проверки получения пользователя

Вот что я делаю (я использую refreshReceipt при запуске приложения)

- (void)refreshReceipt {
    SKReceiptRefreshRequest *refresh = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:nil];
    refresh.delegate = self;
    [refresh start];
}

- (void)requestDidFinish:(SKRequest *)request API_AVAILABLE(ios(3.0), macos(10.7)) {
    if ([request isKindOfClass:[SKReceiptRefreshRequest class]]) {
        NSLog(@"Got a new receipt...");
        [self verifyReceipt:self.loadingView :NO :^{

        } :^{
            [app_delegate jumpToLogin];
        }];
    }
}

- (void)verifyReceipt :(UIView *)view1 :(BOOL)showHUD : (void (^)(void)) complete : (void (^)(void)) incomplete
{
    if (showHUD) {
        [UtilityManager showHUD:view1];
    }

    /* Load the receipt from the app bundle. */

    NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
    NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];

    if (!receipt) {
        /* No local receipt -- handle the error. */
        [UtilityManager hideHUD:view1];
        incomplete();
        return;
    }

    /* Create the JSON object that describes the request */
    NSError *error;

    // Verify the recipt 

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Данные квитанции, которые сохраняются при совершении покупки на устройстве, содержат только данные о покупке. «in_app» содержит список деталей транзакции. Первоначальный чек не будет иметь отмены_даты для транзакции.

Единственное, что нужно было получить cancellation_date для необновляемых подписок - это вызвать SKReceiptRefreshRequest из кода.

Пользователю очень неудобно вводить свой пароль каждый раз, когда мы пытаемся обновить квитанцию. Я звоню в SKReceiptRefreshRequest раз в неделю, чтобы проверить обновления квитанций.

Я подтвердил то же самое с Apple, создав инциденты технической поддержки. У них нет лучшего способа решить эту проблему.

0 голосов
/ 07 января 2020

В вашем случае он запрашивает пароль, потому что на вашем устройстве отсутствует квитанция в песочнице. Он пытается обновить sh существующую квитанцию, но не может ее найти. Таким образом, он получит бесплатную квитанцию ​​sh, поэтому запрашивает пароль.

В процессе производства (когда приложение загружается из App Store) всегда будет квитанция, поэтому она выиграет пароль не требуется.

А почему вы используете SKReceiptRefreshRequest? Требуется только для кнопки «Восстановить покупки».

Вот статья из нашего блога: https://blog.apphud.com/receipt-validation/

...