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

Ios 在一个目标(GCM)中有两个GoogleService-Info.plist(或更多),ios,push-notification,google-cloud-messaging,Ios,Push Notification,Google Cloud Messaging,我正在将GCM集成到一个应用程序中,我们碰巧为同一目标提供了多个构建配置,其中一些使用不同的Bundle ID(我们有不同的帐户、企业和appstore),因此如果我们想在这两个应用程序中都启用GCM推送通知,我们需要两个不同的GoogleService-Info.plist文件(每个文件用于不同的Bundle ID)。我找不到方法告诉GCMSDK从不同的命名文件(默认文件除外)进行初始化。有人知道这是否可能吗 我可以想出两种解决方案,但我宁愿不这样做。 -启动应用程序后(或之前),将捆绑包id

我正在将GCM集成到一个应用程序中,我们碰巧为同一目标提供了多个构建配置,其中一些使用不同的Bundle ID(我们有不同的帐户、企业和appstore),因此如果我们想在这两个应用程序中都启用GCM推送通知,我们需要两个不同的GoogleService-Info.plist文件(每个文件用于不同的Bundle ID)。我找不到方法告诉GCMSDK从不同的命名文件(默认文件除外)进行初始化。有人知道这是否可能吗

我可以想出两种解决方案,但我宁愿不这样做。 -启动应用程序后(或之前),将捆绑包id写入plist文件 -创建不同的目标,每个目标使用不同的plist文件

非常感谢

问候,, 哈维尔

我也有类似的问题:

您可以使用
生成阶段脚本
将正确的.plist文件复制到您的位置:

  • 创建新文件夹(例如:GoogleServiceInfoPList)
  • 复制所有.plist文件(例如:GoogleService-Info-Debug.plist、GoogleService-Info-Stage.plist和GoogleService-Info-Prod.plist)
  • 添加新的
    runscriptphase
    (Xcode:Target->buildphases->“+”按钮)
  • 使用下面的脚本将给定环境的.plist文件复制(替换)到主目录(在我的情况下是
    src
    ):


  • 请注意,必须将
    src/GoogleService Info.plist
    文件添加到Xcode项目(构建阶段->复制捆绑资源)而
    /src/Resources/googleservicesinfoplists/GoogleService Info-*
    文件不一定是这样。

    您是对的,您需要为企业和应用商店帐户提供两个不同的
    GoogleService Info.plist
    文件。但我认为在一个目标中不可能有两个或两个以上的GoogleService-Info.plist。如您所述,最好“创建一个不同的目标,每个目标使用不同的plist文件”。因此,如果目标是enterprise,则使用一个.plist文件,如果另一个目标是发行版本,则使用另一个plist文件。检查这个相关的。谢谢,我已经决定,最后我将在运行脚本构建阶段编辑GoogleService-Info.plist文件,以设置包标识符的正确值。在构建阶段运行脚本是否有效?我认为这是唯一的选择,但似乎无法让我的脚本工作。你能分享你的答案吗?
    cp "${SRCROOT}/src/Resources/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist" "${SRCROOT}/src/GoogleService-Info.plist"