【Swift】1つのプロジェクトで有料版と無料版を出力できるようにする

すでに公開済みの有料版「こどもブラウザー」の無料版をリリースしたときに対応した手順のメモです
有料版のプロジェクトがすでにあることが前提です

既存のターゲットを複製する

すでにある有料版のターゲット右クリックして「Duplicate(複製)」を選びます

1つのプロジェクトで有料版と無料版を出力

複製した後は「〜Copy」となっているので、好きな名前に変更します
今回は「RubyBrawserFree」にしました

複製して作成したターゲットのBundle Identifierを有料版とは異なるものに設定します

フラグを追加する

複製した方のターゲットの
「Build Settings」の「Swift Compiler – Custom Flags」の「Other Swift Flags」にフラグを追加します
今回は

-D FREE_VER

を追加しました
頭の「-D」がないとエラーになります

1つのプロジェクトで有料版と無料版を出力

有料版と無料版で異なる部分を修正する

Swiftはこのようのな記述で分岐できます

#if FREE_VER
   // 無料版の処理
#else
   // 有料版の処理
#endif

ActionExtensionがあればそちらも複製する

1つのプロジェクトで有料版と無料版を出力

ActionExtensionはBundle Identifierが親となるアプリと同じプレフィックスを持つ必要があるので、こちらも複製してBundle Identifierを無料版のものをプレフィックスにしたものに変更します

親となるアプリの「General」の「Embedded Binaries」に今回複製したターゲットの方を追加します。違う方は削除します

1つのプロジェクトで有料版と無料版を出力

有料版と無料版で動作が異なるようにする場合は、前述と同じように「Other Swift Flags」にフラグを追加して、プログラムを分岐させればいいと思います

info.plistを有料版と共有

ターゲットをコピーするとinfo.plistもコピーされ、コピーの方が利用されるようになります。今回は有料版と無料版で同じinfo.plistを使用したいので、コピーされた方を削除して設定を変更します

1つのプロジェクトで有料版と無料版を出力

有料版と同じinfo.plistを設定

1つのプロジェクトで有料版と無料版を出力

ActionExtensionも同様

1つのプロジェクトで有料版と無料版を出力

アイコンを変える

無料版のアイコンを変えたい場合は、アイコンセットをもう1つ作って・・・

1つのプロジェクトで有料版と無料版を出力

そちらを利用するように設定を変更すればOKです

1つのプロジェクトで有料版と無料版を出力

以上です

タイトルとURLをコピーしました