在一个目标(GCM)中有两个GoogleService-Info.plist(或更多)

时间:2016-04-04 15:49:17

标签: ios push-notification google-cloud-messaging

我正在将GCM集成到一个应用程序中,我们碰巧有几个针对同一目标的构建配置,其中一些使用不同的Bundle ID(我们有不同的帐户,企业和appstore),所以如果我们想要启用GCM推送通知我们需要两个不同的GoogleService-Info.plist文件(每个文件用于不同的BundleID)。我找不到一种方法来告诉GCM sdk从一个不同的命名文件初始化,但是默认的。有谁知道这是否可能?

我可以想到两个解决方案,但我宁愿不这样做。 - 一旦应用程序启动(或之前),将plig文件写入plist文件 - 使用不同的plist文件创建不同的Target

非常感谢。

此致 哈维尔

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题:Use User-Defined build settings in custom .plist file

您可以使用Build Phase Script将正确的.plist文件复制到您所在的位置:

  1. 创建一个新文件夹(例如: GoogleServiceInfoPlists )。
  2. 复制所有.plist文件(例如: GoogleService-Info-Debug.plist GoogleService-Info-Stage.plist GoogleService-Info- Prod.plist )。
  3. 添加新Run Script Phase(Xcode:目标 - >构建阶段 - >" +"按钮
  4. 使用下面的脚本将给定环境的.plist文件复制(替换)到主目录(在我的情况下是src):

    cp "${SRCROOT}/src/Resources/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist" "${SRCROOT}/src/GoogleService-Info.plist"
    
  5. 请注意,src/GoogleService-Info.plist文件必须添加到Xcode项目(Build Phases-> Copy Bundle Resources),而/src/Resources/GoogleServiceInfoPlists/GoogleService-Info-*文件不一定。