Подтвердить что ты не робот

В приложении "Купить" кнопка "Восстановить"

Я впервые применил покупки приложений в своем обновлении для приложений, только жду 3 недели и отклонил их по следующей причине:

Мы обнаружили, что ваше приложение предлагает In-App Purchase/s, которые можно восстановить но он не включает функцию "Восстановить" , позволяющую пользователям восстанавливать ранее купленную In-App Purchase/s. Восстановить ранее приобретенных в приложениях для покупок в приложении, было бы целесообразно предоставить кнопку "Восстановить" и инициировать процесс восстановления, когда "Восстановить" , кнопка нажата.

Теперь я подумал о добавлении кнопки navbar вправо (вверху) моей таблицы, где можно было увидеть/прослушивать покупки приложений и добавить следующий код, который будет связан с кнопкой:

 [[SKPaymentQueue defaultQueue]   restoreCompletedTransactions];

Может ли кто-нибудь проверить, что это правильно и, скорее всего, все, что необходимо? Хотелось бы, чтобы это прошло успешно на этот раз. Спасибо заранее!

4b9b3361

Ответ 1

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

Конечно, вам нужно не только вызвать [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];, но и реализовать его восстановление (я имею в виду, предоставляя контент пользователю).

Ответ 2

Я использую вариацию этого:

//inside of an IBaction
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];


// Then this is called
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
    NSLog(@"%@",queue );
    NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]);  

    NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init];
    NSLog(@"received restored transactions: %i", queue.transactions.count);

    for (SKPaymentTransaction *transaction in queue.transactions) {
        NSString *productID = transaction.payment.productIdentifier;
        [purchasedItemIDs addObject:productID];
        NSLog (@"product id is %@" , productID);
        // here put an if/then statement to write files based on previously purchased items
        // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry}
    }  
}

Извините, я на своем iPad, если это не имеет смысла.

Ответ 3

Альтернативой для восстановления может быть переключатель восстановления набор настроек приложения. Он не подавляет пользовательский интерфейс и кажется, что Apple приветствует его (но обязательно упомяните, что вы реализовали механику таким образом).

BOOL shouldRestorePurchases = [[NSUserDefaults standardUserDefaults] boolForKey:@"restorePurchasesKey"];

Ответ 4

Я был отклонен по той же причине. Это связано с тем, что вы можете войти в систему с тем же Apple ID на разных устройствах ios.

Например, скажем, я вошел в систему [email protected] на iPad. Когда я загружаю ваше приложение, я понимаю, что хотел бы удалить рекламу (скажем, у вас есть реклама в вашем приложении, если вы этого не сделаете), поэтому я удаляю их для 99¢. Через год я решил купить iPhone и подписаться на [email protected] в этой учетной записи, и я снова загружу ваше приложение. Объявления все еще существуют, хотя я уже заплатил за них. Кто хотел бы заплатить за одно и то же дважды? С помощью функции restore я могу восстановить покупки, которые я сделал на моем iPad, и заставить их работать с моим iPhone.

Чтобы восстановить покупку, вы можете использовать:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

После этого вам также необходимо предоставить контент, который пользователь купил.