目次
Firebaseで生成したplistファイルをconfiguration毎に切り分けたい
まず、自分の環境だとProject -> Info -> Configurationsは、以下のように分けられています。
そこで、各configuration毎にFirebaseのplistファイルを発行して、切り分けて設定する方法を紹介します。
Swift Complier – Custom Flagsの設定
まず、Target -> Build Settings -> Swift Complier – Custom Flagsへ行き、Debug、Adhoc、Release毎にCustom Flagsを設定します。
これの場合、-D DEBUGというのがFlagにあたります。
これを設定することにより、コード上で、
#if DEBUG // Debugの際に実行される #elseif ADHOC // Adhocの際に実行される #elseif PROD // Releaseの際に実行される #endif
という書き方が出来るようになります。
plistファイルを実際に切り分ける
まずは、Firebaseで発行するファイルをDebug用、Adhoc用、Release用で作成して、プロジェクトファイル内に入れます。
そして、以下の要領で読み込みます。
ここでのポイントは、私の場合、Release用はデフォルトのファイル名を使用している為、optionを使用する必要がない点です。その代わりにDebugとAdhocは、optionでplistのファイル名を指定してあげて、受け渡す必要があります。
import Firebase class AppDelegate func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { #if DEBUG let filePath = Bundle.main.path(forResource: "GoogleService-Info-Debug", ofType: "plist")! let options = FirebaseOptions(contentsOfFile: filePath)! FirebaseApp.configure(options: options) #elseif ADHOC let filePath = Bundle.main.path(forResource: "GoogleService-Info-Adhoc", ofType: "plist")! let options = FirebaseOptions(contentsOfFile: filePath)! FirebaseApp.configure(options: options) #elseif PROD FirebaseApp.configure() #endif return true } }
これをやることで、各実行環境で別々のplistファイルを読めるようになりました。
Custom Flagの設定など、ちょっと厄介なものがありますが、一度設定しておくと他でも使えて便利なので、是非設定してみてはいかがでしょうか。