首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在新的Firebase中,如何在xcode中使用多个配置文件?

在新的Firebase中,如何在xcode中使用多个配置文件?
EN

Stack Overflow用户
提问于 2016-05-27 06:31:14
回答 5查看 20.4K关注 0票数 39

嘿,我正在玩新的firebase iOS SDK,在我的项目中,我只有一个目标,我创建了两个配置,Debug和Release,使用不同的捆绑标识符,但从firebase下载的配置文件似乎只支持一个捆绑标识符。

有人知道如何在多包标识符xcode项目中使用firebase吗?

谢谢!

EN

回答 5

Stack Overflow用户

发布于 2016-05-28 07:43:34

我已经实现了类似的东西,因为我对具有不同捆绑标识符的单个目标有两个方案。在下面的示例中,我有两个不同的方案,一个用于UAT,另一个用于PROD。

创建两个GoogleService-Info.json文件,并将它们放入您的项目目录(而不是Xcode项目)的不同文件夹中,例如

代码语言:javascript
复制
ROOT/config/UAT/GoogleService-Info.json
ROOT/config/PROD/GoogleService-Info.json

然后将文件添加到Xcode项目中,如下所示:

现在,您需要在构建阶段添加一个运行脚本。这将需要在编译源代码阶段之前添加:

这个运行脚本获取适当位置的json文件,并将其复制到构建应用程序目录中,这意味着Firebase/Google将以与在单个标识符设置中识别文件的方式相同的方式来识别它。

代码语言:javascript
复制
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配置文件设置。

票数 17
EN

Stack Overflow用户

发布于 2016-11-11 15:08:11

如果你有一个单一的目标,更好的方法是适当地命名你的配置并加载它们,如下所示。似乎适用于UAT环境示例: Swift 3.0

代码语言:javascript
复制
    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)
票数 13
EN

Stack Overflow用户

发布于 2016-11-16 00:02:28

使用不同的名称将这两个Google Service plist添加到您的项目中:

然后,对于每个构建方案,选择编辑方案,并为环境变量添加一个唯一值,如下所示:

例如,另一个构建方案的BUILD_FOR环境变量将设置为"DEV“。

然后,您可以在App Delegate中检查此变量,并根据构建的方案配置FIRApp:

代码语言:javascript
复制
    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!)
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37472090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档