Skip to content

Instantly share code, notes, and snippets.

@GoMino
Forked from drunknbass/EnvConfig.swift
Created May 3, 2017 16:12
Show Gist options
  • Select an option

  • Save GoMino/0bf60ccdaeafb10b061f828fd4e8b5ac to your computer and use it in GitHub Desktop.

Select an option

Save GoMino/0bf60ccdaeafb10b061f828fd4e8b5ac to your computer and use it in GitHub Desktop.
Firebase stage + Prod config
STEP 1.
Add a flag in the "Other Swift Flags" like -DENVConfigStaging to a debug target.
Now when you build this target you have a debug flag set, otherwise assume production.
STEP 2.
Add the staging and production GoogleService-Info.plist(s)
STEP 3.
Add a build phase script to look for the build flag and copy the appropriate GoogleService-Info.plist to the built .app before codesigning it
Doing this allows you to create a class like EnvConfig.swift to define env specific stuff
You can do the same thing with GCC preprocessor flags, etc.. if you don't swift
CURRENT_DIR=`pwd -P`
SOURCE_DIR="$CURRENT_DIR/PROJECTNAME/"
if [[ $OTHER_SWIFT_FLAGS == *"-DENVConfigStaging"* ]]
then
cp "$SOURCE_DIR/GoogleService-Info.plist.staging" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
else
cp "$SOURCE_DIR/GoogleService-Info.plist.production" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
fi
import Foundation
@objc(EnvConfig)
class EnvConfig: NSObject {
#if ENVConfigStaging
class var isProduction:Bool {
return false
}
#else
class var isProduction:Bool {
return true
}
#endif
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment