2009-02-14 5 views
62

Ich fange an, zu dem Punkt zu kommen, an dem ich eine Lite-Version meiner iPhone-App erstellen möchte. Ich habe ein paar Sachen auf dem Netz gefunden, die über den Prozess ein bisschen sprechen, nämlich:Wie kann ich eine Lite vs Paid-Version einer iPhone-App erstellen?

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

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

Was ich speziell interessiert in den Prozess der vereinfacht Verwaltung Welche Dateien sind in den verschiedenen Versionen meiner App enthalten, da ich meine kostenpflichtige Version fortlaufend modifiziere und erweitere .

Antwort

81

Ursprüngliche Antwort ist von den Tagen vor App-Kauf. Die richtige Antwort ist nun, eine einzelne Binärdatei zu versenden und Ihre kostenpflichtige Version unter in app upgrades anzubieten. Es ist etwas mehr Code, aber es ist eine einzige Lieferung und Ihre Conversion-Rate wird wahrscheinlich besser sein.

Wenn Sie jedoch noch Versionen Ihrer App wollen:

Xcode hat eine gute Unterstützung für mehrere Ziele.

Wählen Sie im Projektmenü "Neues Ziel ...". Fügen Sie eine weitere ausführbare iPhone-Datei hinzu (Cocoa Touch-Anwendung), die Sie dann auf Ressourcenbasis angeben können, welche Elemente in Ihrem Ziel enthalten sind. Dies kann nur das Zusammenstellen bestimmter Codes in Ihrer kostenpflichtigen Version beinhalten.

Sie können ein schnelles visuelles Feedback darüber erhalten, was im aktuellen Ziel enthalten ist und was nicht, indem Sie mit der rechten Maustaste auf den Listenkopf "Gruppen und Dateien" (obere Links) klicken und die Zielmitgliedschaft aktivieren.

Sie wechseln zwischen dem Erstellen verschiedener Ziele auf die gleiche Weise wie Sie zwischen dem Erstellen für Simulator oder iPhone wechseln.

Um anzugeben, wie sich eine bestimmte Klasse zur Erstellungszeit verhält, können Sie zwei Dinge tun - zwei Versionen der Klasse einbeziehen, die jeweils für ihr jeweiliges Ziel erstellt werden, oder Sie können ein Erstellungszeit-Flag für den Vorprozessor setzen. Wählen Sie das Ziel in der Liste "Gruppen und Dateien" und dann "Informationen abrufen" für dieses Ziel. Gehe zum Build-Tab und suche nach "preprocess". Sie sollten ein n Element namens "Preprocessor Macros" sehen, fügen Sie LITE zu Ihrem Lite-Ziel hinzu und fügen Sie auf die gleiche Weise PAID Ihrem bezahlten Ziel hinzu.

Thein in den Quelldateien, die Sie bei der Kompilierung bestimmen können, welche Version Sie kompilieren mit #ifdef LITE usw.

Geht man noch weiter, könnten Sie ein globales Flag oder AppDelegate Membervariable gesetzt basierend auf #ifdef LITE und Veränderung Verhalten zur Laufzeit für die Lite- und kostenpflichtigen Apps. Ich bin mir nicht sicher, ob ich darin einen Wert sehe.

+3

Stimmen Sie auf, weil es eine gute technische Antwort ist, auch wenn es mit meiner philosophischen konkurriert. – Paxic

+0

Danke für deine Antwort Roger .... Wie funktioniert das "Produkt" -Konzept mit den verschiedenen Zielen? Oder ist es etwas ganz anderes zusammen? –

+0

producst sind nur ausführbare Dateien, die Xcode für Sie erstellt. Ich schlage vor, ein Produkt für Ihre kostenpflichtige App und ein anderes für Ihre Lite-App einzurichten. Sie würden jeweils ein anderes .app-Paket erstellen, das in den App Store hochgeladen werden soll. –

1

Ich benutzte einen Git-Zweig. Ich verzweigte meine Haupt-App und machte ein paar Verbesserungen, um eine Menge Inhalte zu deaktivieren. Jetzt arbeite ich hauptsächlich im Master-Zweig und wechsle zu lite und fusioniere spätestens dann, wenn große Entwicklungen stattfinden. Funktioniert sehr gut.

24

Als Entwickler möchten Sie möglichst wenig Code schreiben (weniger Fehler, weniger Zeit). Da die Build-Versionen divergieren, müssen Sie mehr Arbeit und separate Tests investieren.

Wenn Sie kein teures Hacker-Tool erstellen, sollten Sie den Unterschied so einfach wie möglich halten - Sie sollten nur einige versteckte Einstellungen oder Einstellungen haben.Auf diese Weise wird die Mehrheit der Überprüfungen und Tests die gleiche Arbeit in beiden Builds machen, sehr wenig Code wird anders sein. Das Hauptanliegen ist nicht, sich als Entwickler zu belasten.

Der Grund für abweichende Builds besteht darin, sicherzustellen, dass Free nicht in eine "Paid" -Version gehackt werden kann. Die Leute, die versuchen würden, solch eine einfache Beschränkung zu umgehen, sind in erster Linie eine Untergruppe derer, die ihre Telefone jailbreaken würden. Egal, was du tust, du wirst ihr Geld unter keinen Umständen bekommen, außer sie sind so begeistert, dass sie es nur kaufen, um Wertschätzung zu zeigen.

+7

Abgestimmt, weil es ein gutes philosophisches ist, auch wenn es davon abrät, meine technische Lösung zu verwenden ;-) –

+0

stimme ich völlig zu, und ich werde versuchen, so nah wie möglich an meiner bezahlten Version zu bleiben, ohne alles zu verraten! –

3

ich Erfolg mit gefunden:

Tutorial - Same Xcode-Projekt Erstellen Sie mehrere Produkte für das iPhone http://adeem.me/blog/2009/04/18/tutorial-same-xcode-project-create-multiple-products-for-iphone/

Es deckt viel von dem, was Roger Nolan erwähnen in seiner Antwort auf die Frage, aber Schritt für Schritt mit Screenshots.

Es ermöglicht Ihnen, C# ifdefs zu verwenden, um Funktionen in Ihrer App ein- oder auszuschließen.

Einige der Details waren nicht genau richtig - wegen der Unterschiede in Xcode bin ich sicher - aber es war nicht zu schwierig, die richtige/neue Art und Weise, um jeden Schritt zu tun.

HINWEIS: Sie müssen zu Apple gehen und eine neue App-ID für die Lite-Version Ihrer App erhalten. Die in diesem Tutorial beschriebenen Schritte erstellen eine Kopie der Datei info.plist, die Sie wahrscheinlich in eine Datei wie infoLite.plist umbenennen werden. In dieser Datei müssen Sie den "Bundle Identifier" ändern, damit er mit dieser neuen appID übereinstimmt .

2

Mit iPhone 3.0 können Sie stattdessen In-App-Käufe verwenden, um die volle Funktionalität freizuschalten, ohne mehr als eine App erstellen zu müssen. Ich denke auch, dass dies die Leute davon abhalten wird, das umsonst zu bekommen, aber ich bin mir da nicht so sicher.

+0

Haben Sie diesbezüglich Referenzen/Ressourcen? Ich würde gerne eine In-App-Upgrade-Option anbieten, aber ich möchte nicht, dass der Benutzer ein Konto erstellt und ich möchte die Upgrades der Benutzer nicht selbst nachverfolgen müssen. Wenn der Nutzer die App auf einem anderen Telefon installiert, gilt der In-App-Kauf weiterhin? (Ich will es.) – devios1

0

Der bessere Ansatz besteht darin, nur ein einzelnes Projekt mit mehreren Zielen zu erstellen - eines für jede Version Ihrer App. Also, was sind Ziele: Multiple Targets

Verwandte Themen