我正在一个应用程序中集成GCM,我们碰巧为同一目标有几个构建配置,其中一些使用不同的BundleID(我们有不同的帐户、企业和应用商店),所以如果我们想在两者中启用GCM推送通知,我们需要两个不同的GoogleService-Info.plist文件(每个文件对应不同的Bundle ID)。我找不到一种方法来告诉GCM-sdk从不同的命名文件初始化,而不是从默认文件初始化。有人知道这是否可能吗?
我可以想出两种解决方案,但我宁愿不去做。-在应用程序启动后(或之前)将捆绑包id写入plist文件-创建不同的目标,每个目标都有不同的plist文件
非常感谢。
谨致问候,Javier
我遇到了类似的问题:在自定义.plist文件中使用用户定义的构建设置
您可以使用Build Phase Script
将正确的.plist文件复制到您的位置:
- 创建一个新文件夹(例如:GoogleServiceInfoPlists)
- 将所有.plist文件复制到那里(例如:GoogleService Info Debug.plist、Google Service Info Stage.plist和谷歌服务信息棒列表)
- 添加新的
Run Script Phase
(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-*
文件则不一定。