Кнопка восстановления покупок в приложении
Я впервые внедрил покупки в приложение в мое обновление приложения, только слишком ждать 3 недели и он был отклонен по следующей причине:
Мы обнаружили, что ваше приложение предлагает встроенные покупки, которые можно восстановить но он не включает в себя функцию "восстановить", чтобы позволить пользователям восстановить ранее приобрести в приложение покупки/сек. Восстанавливать ранее приобретенные в приложении покупки продуктов, было бы уместно предоставить кнопка "восстановить" и инициировать процесс восстановления, когда "восстановление" кнопка нажата.
Теперь я думаю добавить кнопку navbar
в правую (верхнюю) часть моей таблицы, где покупки приложения можно увидеть / нажать, и добавить следующий код, который будет связан с кнопкой:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Может ли кто-нибудь проверить, что это правильно и, скорее всего, все, что нужно? Хотелось бы, чтобы это прошло успешно и на этот раз. Заранее спасибо!4 ответа:
Алекс, меня отвергли по той же причине на прошлой неделе, и это именно то, чего хотела Apple - после добавления такой кнопкиRestore они не задавали никаких других вопросов на эту тему.
Конечно, вам нужно не только вызвать
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
, но и реализовать само восстановление (я имею в виду предоставление контента пользователю).
Я использую вариант этого:
//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, если это не имеет смысла.
Альтернативой кнопке восстановления может быть переключатель восстановления в пакете настроек приложения . Он не перегружает пользовательский интерфейс и кажется, что Apple приветствует его (но не забудьте упомянуть, что вы реализовали механику таким образом).
BOOL shouldRestorePurchases = [[NSUserDefaults standardUserDefaults] boolForKey:@"restorePurchasesKey"];
Я был отвергнут по той же причине. Это связано с тем, что вы можете войти в систему с одним и тем же
Например, предположим, что я вошел в системуApple ID
на разных устройствах ios.test@iCloud.com
на iPad. Когда я загружаю ваше приложение, я понимаю, что хотел бы удалить рекламу (допустим, у вас есть реклама в вашем приложении, если вы этого не делаете), поэтому я удаляю их для99¢
. Через год я решаю купить iPhone и войти вtest@iCloud.com
на этой учетной записи, и я снова загружаю ваше приложение. Объявления все еще идут там, хотя я уже заплатил за них. Кто захочет платить за одно и то же дважды? С помощью функцииrestore
я могу восстановить покупки, сделанные на моемiPad
, и заставить их работать на моемiPhone
.Чтобы восстановить покупку, вы можете использовать:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
После этого Вам также нужно предоставить контент, который купил пользователь.