我正在将 GCM 集成到应用程序中,我们碰巧对同一目标有多个构建配置,其中一些使用不同的 bundle ID(我们有不同的帐户、企业和应用程序商店),因此如果我们想在我们都需要两个不同的 GoogleService-Info.plist 文件(每个文件对应不同的 BundleID)。我找不到一种方法来告诉 GCM sdk 从默认文件以外的其他命名文件进行初始化。有谁知道这是否可能?
我可以想到两个解决方案,但我宁愿不这样做。 - 应用程序启动后(或之前)将包 ID 写入 plist 文件 - 使用不同的 plist 文件创建不同的目标
非常感谢。
问候, 哈维尔
最佳答案
我遇到了类似的问题:Use User-Defined build settings in custom .plist file
您可以使用构建阶段脚本
将正确的.plist文件复制到您的位置:
- 创建一个新文件夹(例如:GoogleServiceInfoPlists)。
- 复制所有 .plist 文件(例如:GoogleService-Info-Debug.plist、GoogleService-Info-Stage.plist 和 GoogleService-Info- Prod.plist)。
- 添加新的
运行脚本阶段
(Xcode:目标->构建阶段->“+”按钮) 使用下面的脚本将给定环境的 .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/