В приложении "Купить" кнопка "Восстановить"
Я впервые применил покупки приложений в своем обновлении для приложений, только жду 3 недели и отклонил их по следующей причине:
Мы обнаружили, что ваше приложение предлагает In-App Purchase/s, которые можно восстановить но он не включает функцию "Восстановить" , позволяющую пользователям восстанавливать ранее купленную In-App Purchase/s. Восстановить ранее приобретенных в приложениях для покупок в приложении, было бы целесообразно предоставить кнопку "Восстановить" и инициировать процесс восстановления, когда "Восстановить" , кнопка нажата.
Теперь я подумал о добавлении кнопки navbar
вправо (вверху) моей таблицы, где можно было увидеть/прослушивать покупки приложений и добавить следующий код, который будет связан с кнопкой:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Может ли кто-нибудь проверить, что это правильно и, скорее всего, все, что необходимо? Хотелось бы, чтобы это прошло успешно на этот раз. Спасибо заранее!
Ответы
Ответ 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];
После этого вам также необходимо предоставить контент, который пользователь купил.