嘿,我正在玩新的firebase iOS SDK,在我的项目中,我只有一个目标,我创建了两个配置,Debug和Release,使用不同的捆绑标识符,但从firebase下载的配置文件似乎只支持一个捆绑标识符。
有人知道如何在多包标识符xcode项目中使用firebase吗?
谢谢!
发布于 2016-05-28 07:43:34
我已经实现了类似的东西,因为我对具有不同捆绑标识符的单个目标有两个方案。在下面的示例中,我有两个不同的方案,一个用于UAT,另一个用于PROD。
创建两个GoogleService-Info.json文件,并将它们放入您的项目目录(而不是Xcode项目)的不同文件夹中,例如
ROOT/config/UAT/GoogleService-Info.json
ROOT/config/PROD/GoogleService-Info.json
然后将文件添加到Xcode项目中,如下所示:
现在,您需要在构建阶段添加一个运行脚本。这将需要在编译源代码阶段之前添加:
这个运行脚本获取适当位置的json文件,并将其复制到构建应用程序目录中,这意味着Firebase/Google将以与在单个标识符设置中识别文件的方式相同的方式来识别它。
isUAT=`expr "$GCC_PREPROCESSOR_DEFINITIONS" : ".*UAT=\([0-9]*\)"`
RESOURCE_PATH=${SRCROOT}/${PRODUCT_NAME}/config/PROD
if [ $isUAT = 1 ]; then
RESOURCE_PATH=${SRCROOT}/${PRODUCT_NAME}/config/UAT
fi
BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
echo "Copying all files under ${RESOURCE_PATH} to ${BUILD_APP_DIR}"
cp -v "${RESOURCE_PATH}/"* "${BUILD_APP_DIR}/"
我估计你也可以对Google Analytics使用同样的逻辑,它使用了类似的json配置文件设置。
发布于 2016-11-11 15:08:11
如果你有一个单一的目标,更好的方法是适当地命名你的配置并加载它们,如下所示。似乎适用于UAT环境示例: Swift 3.0
var fireBaseConfigFile = Bundle.main.path(forResource: "GoogleService-Info-PROD", ofType: "plist")
#if UAT
fireBaseConfigFile = Bundle.main.path(forResource: "GoogleService-Info-UAT", ofType: "plist")
#endif
guard let firOptions = FIROptions(contentsOfFile: fireBaseConfigFile) else {
assert(false, "Failed to load Firebase config file")
return
}
FIRApp.configure(with: firOptions)
发布于 2016-11-16 00:02:28
使用不同的名称将这两个Google Service plist添加到您的项目中:
然后,对于每个构建方案,选择编辑方案,并为环境变量添加一个唯一值,如下所示:
例如,另一个构建方案的BUILD_FOR环境变量将设置为"DEV“。
然后,您可以在App Delegate中检查此变量,并根据构建的方案配置FIRApp:
let buildFor = ProcessInfo.processInfo.environment["BUILD_FOR"]! as String
var firebasePlistFileName = "GoogleService-Info"
if buildFor == "PROD" {
firebasePlistFileName = "GoogleService-Prod-Info"
}
let firbaseOptions = FIROptions(contentsOfFile: Bundle.main.path(forResource: firebasePlistFileName, ofType: "plist"))
FIRApp.configure(with: firbaseOptions!)
https://stackoverflow.com/questions/37472090
复制相似问题