Как мне управлять созданием облегченной и платной версии приложения для iPhone? - PullRequest
64 голосов
/ 14 февраля 2009

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

http://developer.apple.com/tools/XCode/XCodeprojects.html

http://www.pacificspirit.com/blog/2009/01/27/building_for_multiple_iphone_targets_in_xcode

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

Ответы [ 7 ]

82 голосов
/ 14 февраля 2009

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

Однако, если вы все еще хотите версии вашего приложения:

XCode имеет хорошую поддержку для нескольких целей.

В меню проекта выберите «Новая цель ...». Добавьте еще один исполняемый файл iPhone (Cocoa Touch Application), который затем можно будет указывать в зависимости от ресурса, какие элементы включены в вашу цель. Это может включать в себя только компиляцию определенного кода в платную версию.

Вы можете быстро получить визуальную обратную связь о том, что включено в текущую цель, а что нет, щелкнув правой кнопкой мыши заголовок списка «Группы и файлы» (верхние lhs) и включив целевое членство.

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

Чтобы указать во время сборки, как ведет себя конкретный класс, вы можете сделать две вещи - включить две версии класса, каждая из которых создана для соответствующей цели, или вы можете установить флаг времени сборки для препроцессора. Выберите цель в списке «Группы и файлы», затем «получить информацию» об этой цели. Перейдите на вкладку сборки и выполните поиск «препроцесс». Вы должны увидеть элемент под названием «Макросы препроцессора», добавьте LITE к вашей легкой цели и таким же образом добавьте PAID к своей платной цели.

В ваших исходных файлах вы можете определить во время компиляции, какую версию вы компилируете для использования #ifdef LITE и т. Д.

Более того, вы можете установить глобальный флаг или переменную-член AppDelegate на основе #ifdef LITE и изменить поведение во время выполнения для Lite и платных приложений. Я не уверен, что вижу в этом ценность.

24 голосов
/ 15 февраля 2009

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

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

Причиной появления расходящихся сборок является то, что Free не может быть взломана в «Платную» версию. Люди, которые будут пытаться обойти такое простое ограничение, являются в первую очередь подгруппой тех, кто делает джейлбрейк своих телефонов. Независимо от того, что вы делаете, вы не получите их деньги ни при каких условиях, кроме того, что они настолько поражены, что покупают их только для того, чтобы выразить признательность.

7 голосов
/ 18 февраля 2009

Создатель "Цветочного сада" подробно рассказывает о плюсах / минусах различных подходов к созданию облегченной версии здесь:

http://gamesfromwithin.com/from-full-to-lite-in-under-an-hour

3 голосов
/ 14 сентября 2009

Я нашел успех с:

Учебник - тот же проект Xcode Создание нескольких продуктов для iPhone http://adeem.me/blog/2009/04/18/tutorial-same-xcode-project-create-multiple-products-for-iphone/

Он охватывает большую часть того, что Роджер Нолан упомянул в своем ответе на вопрос, но шаг за шагом со снимками экрана.

Это позволяет вам использовать C # ifdef для включения или исключения функциональности в вашем приложении.

Некоторые детали были не совсем верными - из-за различий в Xcode, я уверен - но не было слишком сложно найти правильный / новый способ сделать каждый шаг.

ПРИМЕЧАНИЕ. Вам нужно будет зайти в Apple и получить новый идентификатор приложения для облегченной версии вашего приложения. Шаги, описанные в руководстве, создадут копию файла info.plist, который вы, вероятно, переименуете во что-то вроде infoLite.plist - в этом файле вам нужно изменить «Идентификатор пакета», чтобы соответствовать этому новому appID .

2 голосов
/ 14 ноября 2009

С iPhone 3.0 вы можете вместо этого использовать внутриигровые покупки, что позволяет разблокировать все функции без необходимости создавать более одного приложения. Я также думаю, что это позволит избежать получения людьми этого бесплатно, но я не уверен в этом.

1 голос
/ 14 февраля 2009

Я использовал ветку git. Я разветвлял свое основное приложение и сделал несколько настроек, чтобы отключить кучу контента. Сейчас я работаю в основном в основной ветке и переключаюсь на lite и объединяю последние, когда происходят крупные разработки. Работает очень хорошо.

0 голосов
/ 03 июня 2015

Лучшим подходом будет иметь только один проект с несколькими целями вместо этого - по одной для каждой версии вашего приложения. Итак, каковы цели: Несколько целей

...