Есть ли у кого-нибудь идеи, как сбросить и / или очистить песочницу для покупок в приложении iOS?
У меня есть приложение, которое я тестирую с помощью песочницы, и я хотел бы тестировать новые покупки без необходимости создавать нового тестового пользователя каждый раз, когда я что-то покупаю.
Если я этого не сделаю, то (конечно) я всегда получаю сообщение о том, что элемент для покупки в приложении уже был куплен, когда я нажимаю кнопку покупки своего приложения.
источник
+
адреса электронной почты больше не могут использоваться для подписки на Apple ID.Насколько я знаю, вы не можете этого сделать. Серверная часть песочницы работает как реальная учетная запись - после покупки она приобретается (и, таким образом, вы можете протестировать восстановление). Вы должны делать большую часть своей разработки с убранными шайбами, а затем, когда вы доберетесь до реального тестирования, просто ожидайте создания нескольких тестовых учетных записей.
источник
SKPaymentTransactionStateRestored
возвращаетесь из магазина приложений вместоSKPaymentTransactionStatePurchased
. Поскольку вы не используете здесь реальные деньги для всех целей и задач,SKPaymentTransactionStateRestored
это на 100% эквивалентноSKPaymentTransactionStatePurchased
тестированию. Сброс состояния вашего приложения на «не куплено» действительно зависит от вас (просто удалите соответствующую запись вУ меня есть 2 предмета для покупки в приложении. 1 для производства. а другой для тестирования. когда мне нужно «очистить», я удаляю элемент в приложении и создаю новый (15 секунд в itunes connect и 1 секунда для изменения идентификатора продукта в коде)
если мне не нужно тестировать «нового пользователя», я использую продукт в приложении.
источник
Ну, технически вам это не нужно.
Если вы получаете
SKPaymentTransactionStateRestored
, это на 100% эквивалентно тому, что магазин приложений проверяет пользователя и предоставляет ему покупку. У меня есть переключатель вроде:Вопрос о том, чтобы иметь логику вашего приложения / вернуть покупку, прост: если вы кешируете покупки в связке ключей, удалите свою связку ключей. Если вы делаете это иначе, просто измените состояние локального приложения, чтобы сделать вид, будто пользователь никогда не покупал его раньше. Диалог с запросом на покупку остается таким же, с той лишь разницей, что когда вы нажимаете ДА,
SKPaymentTransactionStateRestored
вместоSKPaymentTransactionStatePurchased
.источник
Удаление и переустановка приложения работают также и при тестировании в песочнице. Очевидно, зависит от приложения, но я тестирую приложение на основе подписки, которое на данный момент покупает только во время регистрации, так что это было самое простое решение.
источник
Проверьте SimStoreKit . Это «смоделированная версия iPhone's StoreKit для тестирования пользовательского интерфейса магазина в симуляторе iPhone или даже на устройстве без настройки IAP в Connect».
SimStoreKit хранит покупки в пользовательских настройках по умолчанию под ключом
ILSimSKTransactions
. Итак, чтобы очистить все покупки, вы можете:На симуляторе вы можете просто удалить свое приложение и установить его снова.
Я успешно использовал SimStoreKit для отладки своего магазина приложений перед тестированием с песочницей. Прелесть этой библиотеки в том, что ее можно настроить на использование тех же имен классов, что и в реальной структуре StoreKit (предварительно выполнив необходимые
#define ILSimReplaceRealStoreKit 1
действия#include <ILSimStoreKit.h>
).В исходные файлы, где мне нужно получить доступ к StoreKit, я включаю этот файл заголовка:
Это дает эффект использования SimStoreKit, когда я запускаю на симуляторе, и реального StoreKit, когда я запускаю на устройстве.
источник
В качестве альтернативы для создания решения с несколькими тестовыми пользователями вы можете создать несколько тестов в покупках приложений в iTunes connect, тогда вам не нужно менять учетную запись пользователя.
источник
Просто продолжайте использовать ту же тестовую учетную запись, восстанавливая покупки, а не совершая новые. В конце концов, независимо от того, начинаете ли вы новую покупку или восстанавливаете старую, ВАШЕ ПРИЛОЖЕНИЕ будет делать то же самое (по крайней мере, вначале, возможно, пользовательский интерфейс будет обновляться по-другому после завершения). Apple - это люди, которые по-разному относятся к вещам в разных ситуациях - не беспокойтесь об этом.
Поместите свою логику доставки в случай SKPaymentTransactionStateRestored в реализации этого метода для тестирования:
Затем обязательно поместите эту логику доставки в случай SKPaymentTransactionStatePurchased.
В конце концов, поскольку большинство из нас в той или иной степени страдает обсессивно-компульсивным расстройством, проведите заключительный тест со свежим аккаунтом (нетрудно сделать второй для абсолютной уверенности).
Последнее, что нужно отметить: рассмотрите положение яблока. Если бы разработчикам приходилось тратить время на создание десятков или сотен учетных записей для тщательного тестирования IAP, они бы решили эту проблему. Нет проблем.
источник