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

标签 ios push-notification google-cloud-messaging

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

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

非常感谢。

问候, 哈维尔

最佳答案

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

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

  1. 创建一个新文件夹(例如:GoogleServiceInfoPlists)。
  2. 复制所有 .plist 文件(例如:GoogleService-Info-Debug.plistGoogleService-Info-Stage.plistGoogleService-Info- Prod.plist)。
  3. 添加新的运行脚本阶段(Xcode:目标->构建阶段->“+”按钮)
  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-* 文件不一定。

关于ios - 在一个目标 (GCM) 中有两个 GoogleService-Info.plist (或更多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36407265/

相关文章:

ios - "pod install --verbose"错误

ios - 苹果 LLVM 6.1 错误 Xcode

ios - 如果您的应用程序使用的 API 在您的应用程序发布后被弃用,会发生什么情况?

iOS - 当 kGGLInstanceIDAPNSServerTypeSandboxOption 标志设置为 false 时未收到 GCM 消息

java - 无法构建同时包含 Azure SDK 和 Google Play 的应用程序

ios - 我正在尝试打印 ("_id") 从服务器获取的数据

android - 在自定义 BroadcastReceiver 中未在 Android 上接收解析推送通知

swift - 如何调试 "The default Firebase app has not yet been configured."?

ios - 如果字符限制超过 80 个字符,则不会发送推送通知

java - 如何使用 Android 代码中的 GCM CCS 进行上游消息服务?