👁️
Xcodeプロジェクトで環境変数を設定し、読み込む方法
Xcodeプロジェクトで環境変数を設定し、読み込む方法
この記事では、Xcodeプロジェクトで環境変数を設定し、それらをAppDelegateで読み込む方法について説明します。xcconfigファイルやXcode Cloudでの環境変数設定を利用して、プロジェクトのビルドや実行時に適切な環境変数を使用する方法を紹介します。
環境変数の設定
まず、環境変数をxcconfigファイルおよびXcode Cloudで設定する方法を見ていきます。
1. xcconfig ファイルの設定
xcconfigファイルはビルド設定を定義するためのファイルです。以下に例を示します。
Debug.xcconfig
ROLLBAR_KEY = debug-rollbar-key
ADMOB_KEY = debug-admob-key
REVENUECAT_KEY = debug-revenuecat-key
Release.xcconfig
ROLLBAR_KEY = release-rollbar-key
ADMOB_KEY = release-admob-key
REVENUECAT_KEY = release-revenuecat-key
2. Xcode Cloudの設定
Xcode Cloudの設定ページで環境変数を追加します。以下のように設定します:
- 名前:
ROLLBAR_KEY- 値:
cloud-rollbar-key
- 値:
- 名前:
ADMOB_KEY- 値:
cloud-admob-key
- 値:
- 名前:
REVENUECAT_KEY- 値:
cloud-revenuecat-key
- 値:
Info.plist に環境変数を追加
Info.plistにカスタムキーを追加し、xcconfigファイルの設定を参照できるようにします。
Info.plist
<key>ROLLBAR_KEY</key>
<string>$(ROLLBAR_KEY)</string>
<key>ADMOB_KEY</key>
<string>$(ADMOB_KEY)</string>
<key>REVENUECAT_KEY</key>
<string>$(REVENUECAT_KEY)</string>
AppDelegateのExtensionで環境変数を読み込む
次に、AppDelegateに環境変数を読み込む処理を追加し、構造体に格納します。
EnvironmentConfig.swift
struct EnvironmentConfig {
let rollbarKey: String
let admobKey: String
let revenueCatKey: String
}
AppDelegate.swift
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var environmentConfig: EnvironmentConfig?
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 他の初期化処理
// 環境変数の読み込み
environmentConfig = loadEnvironmentVariables()
if let config = environmentConfig {
print("Rollbar Key: \(config.rollbarKey)")
print("AdMob Key: \(config.admobKey)")
print("RevenueCat Key: \(config.revenueCatKey)")
}
return true
}
}
extension AppDelegate {
func loadEnvironmentVariables() -> EnvironmentConfig {
guard
let rollbarKey = Bundle.main.object(forInfoDictionaryKey: "ROLLBAR_KEY") as? String ?? ProcessInfo.processInfo.environment["ROLLBAR_KEY"],
let admobKey = Bundle.main.object(forInfoDictionaryKey: "ADMOB_KEY") as? String ?? ProcessInfo.processInfo.environment["ADMOB_KEY"],
let revenueCatKey = Bundle.main.object(forInfoDictionaryKey: "REVENUECAT_KEY") as? String ?? ProcessInfo.processInfo.environment["REVENUECAT_KEY"]
else {
fatalError("One or more environment variables are missing")
}
return EnvironmentConfig(rollbarKey: rollbarKey, admobKey: admobKey, revenueCatKey: revenueCatKey)
}
}
説明
-
EnvironmentConfig構造体:
-
rollbarKey、admobKey、およびrevenueCatKeyの3つの変数を持つ構造体を定義します。
-
-
AppDelegate:
-
environmentConfigプロパティを定義し、環境変数を格納するためのインスタンスを保持します。 -
application(_:didFinishLaunchingWithOptions:)メソッド内でloadEnvironmentVariables()メソッドを呼び出し、読み込んだ環境変数をenvironmentConfigに格納します。
-
-
loadEnvironmentVariablesメソッド:
-
Info.plistまたはProcessInfo.processInfo.environmentから環境変数を取得し、1つでも不足している場合はfatalErrorでアプリをクラッシュさせます。 - 環境変数がすべて揃っている場合は、
EnvironmentConfigのインスタンスを作成して返します。
-
まとめ
この方法により、Xcodeプロジェクトで環境変数を設定し、AppDelegateで読み込んで使用することができます。xcconfigファイルやXcode Cloudの環境変数設定を活用して、プロジェクトのビルドや実行時に適切な設定を適用できるようになります。環境変数が不足している場合はアプリをクラッシュさせることで、デバッグを容易にし、設定ミスを防ぐことができます。
Discussion