【问题标题】:Have two GoogleService-Info.plist (or more) in one target (GCM)在一个目标 (GCM) 中有两个 GoogleService-Info.plist(或更多)
【发布时间】:2016-07-24 06:24:19
【问题描述】:

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

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

非常感谢。

问候, 哈维尔

【问题讨论】:

  • 您是对的,您需要为 Enterprise 和 Appstore 帐户提供两个不同的 GoogleService-Info.plist 文件。但我认为不可能在一个目标中有两个或多个 GoogleService-Info.plist。正如您所说,最好“使用不同的plist文件创建一个不同的目标”。因此,如果目标是企业,则使用一个 .plist 文件,如果另一个目标是发布版本,则使用另一个 plist 文件。检查这个相关的question
  • 谢谢,我决定最后我将在运行脚本构建阶段编辑 GoogleService-Info.plist 文件,为包标识符设置正确的值。
  • 构建阶段的运行脚本是否有效?我认为这是唯一的选择,但似乎无法让我的脚本正常工作。你能分享你的答案吗?

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


【解决方案1】:

我也有类似的问题:Use User-Defined build settings in custom .plist file

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

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

    cp "${SRCROOT}/src/Resources/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist" "${SRCROOT}/src/GoogleService-Info.plist"
    

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-04
    • 2017-10-19
    • 1970-01-01
    • 2018-01-01
    • 2016-03-21
    • 2019-10-30
    • 2017-01-14
    • 1970-01-01
    相关资源
    最近更新 更多