使用带有两个目标的Google登录

Kat*_*reg 17 ios google-signin

我有一个我无法弄清楚的问题,我到处搜索.

我最近在我的应用中添加了Google登录,但它在主要目标上工作正常,但是,由于我使用多个目标来部署我的应用的辅助版本,因此第二个捆绑标识符无法添加到"GoogleService" -Info.plist".Google登录代码按名称引用此文件,因此我不能像我为其他plist所做的那样简单地更改每个应用版本的名称.

我已经尝试将环境变量添加到每个方案中,并在plist中使用$ {BUNDLE_ID}来根据所选方案进行更改,但它也不起作用.有什么我想念的吗?具有多个目标的工作空间应该如何为每个目标使用具有不同变量的相同plist?

谢谢!

编辑:尝试使用XCConfig文件将plist中的静态值替换为编译时变量.没有运气,可能是因为我认为Google登录正在直接访问该文件.我假设任何使用Google登录的人都有一个具有多个目标(广告支持与付费溢价)的应用必须解决这个问题.请帮忙.

Rap*_*ael 27

我有同样的问题,我找到了一个非常简单的解决方案.

只需复制GoogleServices-Info.plist并将其放在不同的文件夹中即可.该文件夹必须是物理上不同的文件夹,因为文件系统不会在同一文件夹中接受相同的文件名.因此,在finder中创建一个真实的文件夹并将其添加到XCode,不要使用XCode组.

然后根据每个plist文件更改目标成员资格.而已!



小智 7

我有同样的问题.我有四个不同的目标需要使用相同的GoogleService-Info.plist文件但具有不同的bundleID.我偶然发现了Restless Thinker的这篇优秀文章,它为这个确切的问题提供了解决方案.

PlistBuddy是Apple提供的免费工具,内置于OSX中.

PlistBuddy可以创建和修改plist文件.这是Fotis的一个很棒的教程.他让它看起来像一块蛋糕.

首先,您要检查GoogleService-Info.plist文件是否列在每个目标的Build Phases> Copy Bundle资源下.这应该已经到位,但重新检查不会受到伤害.如果文件不存在,请添加该文件.

您需要做的下一件事是为每个目标创建一个新的构建阶段.转到项目>目标>选择目标>构建阶段检查"构建阶段"屏幕的左上角区域是否有+按钮.

添加新的自定义阶段.(您可能已经有Run Script阶段,在这种情况下,只需在现有命令之后继续添加命令)

选择New Run Script Phase并在打开的新框中输入您的PlistBuddy命令

/usr/libexec/PlistBuddy -c "Set :BUNDLE_ID ${PRODUCT_BUNDLE_IDENTIFIER}" $BUILT_PRODUCTS_DIR/$TARGET_NAME.app/GoogleService-Info.plist
Run Code Online (Sandbox Code Playgroud)

确保您的.app(在Product下)文件名与您的目标名称相同,否则将无效.您可以$ TARGET_NAME.app使其与project.app名称相同.

您可以通过这种方式更改更多值,只需在脚本中添加另一个新行即可.您至少需要再添加两行才能更改CLIENT_ID和REVERSE_CLIENT_ID.

/usr/libexec/PlistBuddy -c "Set :CLIENT_ID 123456789012-abcdefghijklmnopqrstuvwxyzabcdefghijklm.apps.googleusercontent.com" $BUILT_PRODUCTS_DIR/$TARGET_NAME.app/GoogleService-Info.plist
/usr/libexec/PlistBuddy -c "Set :REVERSED_CLIENT_ID com.googleusercontent.apps.123456789012-abcdefghijklmnopqrstuvwxyzabcdefghijklm" $BUILT_PRODUCTS_DIR/$TARGET_NAME.app/GoogleService-Info.plist
Run Code Online (Sandbox Code Playgroud)

你可能需要清理它才能工作.在设备上构建和运行.您可能需要检查运行脚本下的小方框,该小方框在设备上安装时显示"仅在安装时运行脚本".当我未选中此框时,XCode不断引用我的旧Derived数据.

使用PlistBuddy,您可以根据目标更改任何plist值.希望这有帮助.