Две версии приложения для iOS - бесплатная и платная - как условно изменить идентификатор проекта в Xcode?

У меня есть приложение с идентификатором com.mydomain.AppName, которое является платной версией.

Я решил также представить бесплатную версию, и с помощью своего кода я легко добавляю объявления/удаляю некоторые функциональные возможности с помощью простого # определенного /# ifdef бизнеса.

Тем не менее, мне нужно, чтобы мой идентификатор приложения отличался для бесплатной версии. Как мне сделать это условно (то есть #ifdef FREE_VERSION... и т.д.) Для моего приложения?

Ответ 1

На этот вопрос ответил предыдущий пост

Основная идея заключается в том, что вы создаете две цели, а затем либо используете #ifdefs, либо создаете отдельные файлы для управления контентом в двух целях. Создание другой цели мертво просто. Просто щелкните правой кнопкой мыши по существующей цели и продублируйте ее. Дайте ему имя, которое вы хотите для бесплатного приложения.

В вашем случае вы, вероятно, захотите иметь разные значки для игры "Свободный и платный", поэтому создайте две папки с иконками - "Free-Icons", а другую - "Paid-Icons". Поместите их в папку проекта и при импорте присоедините их к одной из целей.

Я продублировал исходные файлы Info.plist и Prefix.pch и дал им разные имена, но вы можете использовать одни и те же имена, просто поместите их в разные папки. Вам нужно будет настроить параметры сборки для каждой цели, чтобы отразить новые имена.

У вас может быть меньше контента в бесплатном приложении. Просто выберите звуки и изображения, которые находятся только в платных приложениях, а в инспекторе отметьте целевое членство как только платное приложение.

Вам также нужно будет отредактировать свои схемы так, чтобы вы могли создавать две версии. Я только что закончил это для проекта, над которым я работаю, и потребовалось около двух часов от начала до конца, чтобы найти все, что нужно было изменить. Я предполагаю, что могу добавить еще одну версию примерно через 15 минут, чтобы узнать, что я делаю.

Этот способ делать вещи лучше, чем дублировать код или заменять содержимое в одной базе кода, потому что вы можете легко переключаться между целями, чтобы убедиться, что все работает, когда вы вносите изменения.

Ответ 2

Вы можете достичь этого, имея разные проекты XCode - по одному для каждого типа приложений, которые полагаются на общий код (например, проект библиотеки XCode). Один проект XCode будет предназначен для платного приложения и будет иметь разные макросы, функции настройки. Другой проект XCode будет бесплатным приложением. Оба проекта приложений могут включать в себя общие источники - которые будут скомпилированы на основе макросов (PAID или БЕСПЛАТНО) и т.д.