我正在尝试设置不同的firebase项目,用于开发和生产口味和xCode方案。在Android上运行良好. 但是,在IOS中当我尝试使用prod flavor登录google_sign_in时它使应用程序崩溃,没有任何输出。在开发版本中它也能很好地工作.
为了设置这个,我遵循了这个帖子
我想问题可能在这里:
改变不同的REVERSED_CLIENT_ID取决于我这样做的味道(这也包括在我之前提到的帖子):
我将此添加到ios/Flutter/Debug.xcconfig
和ios/Flutter/Release.xcconfig
GOOGLE_SERVICE_REVERSED_CLIENT_ID = {Your REVERSED_CLIENT_ID found in GoogleService-Info.plist file}
在我的ios/Runner/info.plist
上,我改变了这个:
<key>CFBundleURLSchemes</key>
<array>
<string>myOldReversedClientId</string>
</array>
:
<key>CFBundleURLSchemes</key>
<array>
<string>$(GOOGLE_SERVICE_REVERSED_CLIENT_ID)</string>
</array>
最后在xCode在Build Settings -> User-Defined
我定义了我的变量GOOGLE_SERVICE_REVERSED_CLIENT_ID根据每个环境:
Debug-dev = com.googleusercontent.apps.{dev client-id}
Debug-prod = com.googleusercontent.apps.{prod client-id}
Profile-dev = com.googleusercontent.apps.{dev client-id}
Profile-prod = com.googleusercontent.apps.{prod client-id}
Release-dev = com.googleusercontent.apps.{dev client-id}
Release-prod = com.googleusercontent.apps.{prod client-id}
(显然,使用每个GoogleService-Info.plist的REVERSED_CLIENT_ID)
另外,当我实现GoogleSignIn
类时,我这样做:
GoogleSignIn(clientId: DefaultFirebaseOptions.currentPlatform.iosClientId).signIn()
我的ios/runner
文件夹中没有GoogleService-Info.plist
文件
因为它适用于开发风格,但它不适合产品风格,我认为当我实现GoogleSignIn
类并定义clientId
时,这可能是一个问题。也许我正在传递一个Id,它适用于开发风味,但不适合产品风味,但我不确定,我不知道我有哪个其他的选择。
已解决。
我必须这样签名:
GoogleSignIn().signIn()