Как мне управлять созданием Lite vs Paid версии приложения для iPhone?

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

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

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

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

Ответ 1

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 4

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

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

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

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

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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