web-dev-qa-db-ja.com

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

私が特に興味を持っているのは、有料版のバージョンを継続的に変更および強化するときに、アプリのさまざまなバージョンに含まれるファイルを管理するプロセスを簡略化することです。

64
Brad Parks

元の答えは、アプリ購入の前日からです。正解は、単一のバイナリを出荷し、有料バージョンを アプリのアップグレード で提供することです。少し多くのコードですが、それは単一の出荷であり、変換率はおそらくより良いでしょう。

ただし、アプリのバージョンを引き続き使用する場合は、次のようにします。

Xcodeは複数のターゲットを適切にサポートしています。

プロジェクトメニューから[新しいターゲット...]を選択します。別のiPhone実行可能ファイル(Cocoa Touch Application)を追加します。リソースに基づいて、ターゲットに含めるアイテムをリソースごとに指定できます。これには、有料バージョンへの特定のコードのコンパイルのみを含めることができます。

現在のターゲットに含まれるものと含まれないものをすばやく視覚的にフィードバックするには、「グループとファイル」リストのヘッダー(上部のlhs)を右クリックし、ターゲットメンバーシップを有効にします。

シミュレータまたはiPhoneのビルドを切り替えるのと同じ方法で、異なるターゲットのビルドを切り替えます。

ビルド時に特定のクラスの動作を指定するには、2つのことを行うことができます。それぞれのターゲット用にビルドされるクラスの2つのバージョンを含めるか、プリプロセッサのビルド時フラグを設定できます。 「グループとファイル」リストでターゲットを選択し、そのターゲットの「情報を取得」します。 [ビルド]タブに移動し、「前処理」を検索します。 「プリプロセッサマクロ」というnアイテムが表示され、ライトターゲットにLITEを追加し、同様に有料ターゲットにPAIDを追加します。

ソースファイル内で、#ifdef LITEなどを使用してコンパイルするバージョンをコンパイル時に決定できます。

さらに進んで、#ifdef LITEに基づいてグローバルフラグまたはAppDelegateメンバー変数を設定し、Liteアプリと有料アプリの実行時の動作を変更できます。それでも価値があるとは思いません。

82
Rog

開発者は、可能な限り最小限のコード(バグの減少、時間の短縮)を作成する必要があります。ビルドバージョンが異なると、より多くの作業と個別のテストに投資する必要があります。

高価なハッカーツールを作成しているのでない限り、違いをできるだけ単純に保つことを検討するかもしれません-いくつかの隠された設定や設定があるだけです。このように、大部分のチェックとテストは両方のビルドで同じ作業を行いますが、コードはほとんど異なりません。主な関心事は、開発者として自分自身に負担をかけないことです。

ビルドを分岐させる理由は、Freeを「有料」バージョンにハッキングできないようにするためです。このような単純な制限を回避しようとする人々は、主に電話を脱獄する人々のサブセットです。あなたが何をしようとも、彼らは感謝を示すためだけに彼らがそれを買ったので、彼らがすごいと思っている以外の条件の下で彼らのお金を得ることはありません。

24
Paxic

「フラワーガーデン」の作成者は、ライトバージョンを作成するためのさまざまなアプローチの長所と短所をここで詳しく説明します。

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

7
Brad Parks

私は成功しました:

チュートリアル–同じXcodeプロジェクトでiPhone用の複数の製品を作成http://adeem.me/blog/2009/04/18/tutorial- same-xcode-project-create-multiple-products-for-iphone /

それは質問への彼の答えでロジャー・ノーランが言ったことの多くをカバーしますが、スクリーンショットで段階的に。

これにより、Cの#ifdefを使用して、アプリに機能を含めたり除外したりできます。

Xcodeの違いのため、詳細の一部は正確ではありませんでしたが、各ステップを実行するための正しい/新しい方法を理解することはそれほど難しくありませんでした。

注:Appleに移動して、アプリのLiteバージョンの新しいアプリIDを取得する必要があります。チュートリアルで説明されている手順により、info.plistファイルのコピーが作成されます。これはおそらくinfoLite.plistのような名前に変更します。このファイルでは、この新しいappIDに一致するように「バンドルID」を変更する必要があります。

3
Mark Terry

IPhone 3.0では、代わりにアプリ内購入を使用して、複数のアプリを作成しなくても、すべての機能をロック解除できます。これは人々がこれを無料で手に入れることを避けるだろうと私は思いますが、私はそれについて確信がありません。

2
InFreefall

Gitブランチを使用しました。メインアプリを分岐し、いくつかの調整を行って、多数のコンテンツを無効にしました。現在、私は主にmasterブランチで作業し、liteに切り替えて、主要な開発が行われたときに最新のものにマージします。とてもうまくいきます。

1
Alex Wayne

より良いアプローチは、単一のプロジェクトだけを持ち、代わりに複数のターゲット(アプリのバージョンごとに1つ)を持つことです。ターゲットは何ですか Multiple Targets

0
Himanshu padia