Я могу протестировать в среде Xcode. Я могу протестировать с помощью TestFlight, который использует НАСТОЯЩИЙ идентификатор Apple для совершения покупок в среде песочницы.
Но как мне протестировать пользователя песочницы в среде песочницы? Потому что мне нужно очистить историю покупок пользователей в песочнице, чтобы снова протестировать первые покупки.
Я читал документы, и я чувствую, что каждый конкретный документ перескакивает через ту часть информации, которая мне нужна. В нем объясняется, как создать тестового пользователя песочницы, и я это сделал. Много лет назад я много работал над IAP, но все изменилось настолько, что это не работает так, как я ожидал. Когда я читаю документы, я чувствую, что не могу найти недостающую часть.
Когда я тестирую в симуляторе с Xcode, мои IAP-транзакции выполняются в среде Xcode. Это имеет смысл.
На этой странице написано:
Чтобы запустить приложение с помощью Apple ID в тестовой среде, создайте и запустите приложение. из Xcode.
Но когда я тестирую установку на физическом устройстве непосредственно из Xcode, мои IAP-транзакции также выполняются в среде Xcode. Я думал, что это поместит меня в среду Песочницы, но это не так. Менеджер транзакций Xcode показывает транзакции. Первоначальный контроллер представления покупки вообще не ссылался на песочницу, и в предупреждении «Все готово» отображается «Среда: Xcode» вместо «Среда: песочница».
Когда я помещаю тестовую сборку в TestFlight и тестирую ее с использованием этой версии, мои IAP-транзакции выполняются с использованием моего реального Apple Id (но на самом деле с меня не взимается плата за какие-либо транзакции).
Я предполагал, что тестирование в TestFlight даст мне среду Sandbox, но это происходит в среде Production. (Контроллер представления покупки не показывает песочницу, а оповещение «Все готово» не показывает песочницу.)
Итак, как мне протестировать в песочнице? Каждый способ, которым я пытаюсь протестировать, либо помещает меня в среду Xcode, либо в производственную среду.
Что мне не хватает?
Я вышел из своего настоящего идентификатора Apple на своем телефоне, а затем вошел в систему с учетными данными пользователя песочницы, которые я создал в AppStore Connect. Но когда я попытался протестировать приложение, установив его из Xcode, оно все еще говорит, что я нахожусь в тестовой среде Xcode. Когда я создаю транзакции, эти транзакции отображаются в диспетчере транзакций Xcode.
Как протестировать в среде Sandbox?
Разница между IAP в режиме «Xcode» и режимом «Песочницы» заключается в том, настраиваете ли вы конфигурацию StoreKit или нет в схеме вашей цели.
В Xcode выберите меню «Продукт» и перейдите в «Схема», затем «Редактировать схему...». Выберите «Выполнить» слева, а затем перейдите на вкладку «Параметры».
Для параметра «Конфигурация StoreKit» вы получите режим Xcode, если выберете конкретную конфигурацию. Вы получите режим песочницы, если установите для этого параметра значение «Нет», даже при запуске приложения из Xcode.
Ничто из этого не применимо при запуске из TestFlight. В TestFlight вы находитесь в режиме полного производства.
Чтобы убедиться в этом, я вошел в учетную запись песочницы в приложении «Настройки» в App Store -> УЧЕТНАЯ ЗАПИСЬ SANDBOX. Затем я запустил свое приложение через Xcode и прошел некоторые IAP в своем приложении. Когда для конфигурации StoreKit было установлено значение «Нет», на экранах IAP отображалась «Песочница». Когда конфигурация StoreKit была настроена на определенный файл storekit, на экранах IAP отображалось «Xcode».