FirebaseのplistファイルをDebugやReleaseで切り分ける方法

Swift

Firebaseで生成したplistファイルをconfiguration毎に切り分けたい

まず、自分の環境だとProject -> Info -> Configurationsは、以下のように分けられています。

xcode

そこで、各configuration毎にFirebaseのplistファイルを発行して、切り分けて設定する方法を紹介します。

Swift Complier – Custom Flagsの設定

まず、Target -> Build Settings -> Swift Complier – Custom Flagsへ行き、Debug、Adhoc、Release毎にCustom Flagsを設定します。
これの場合、-D DEBUGというのがFlagにあたります。

xcode

これを設定することにより、コード上で、

#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の設定など、ちょっと厄介なものがありますが、一度設定しておくと他でも使えて便利なので、是非設定してみてはいかがでしょうか。

コメントを残す