如何显示谷歌账号登录时游戏应用常见的谷歌Play顶部下拉登录弹窗
你当前调用的silentSignIn()为谷歌Play游戏服务的静默登录接口,本身的设计逻辑就是无任何交互界面,登录成功后也不会触发顶部弹出的登录成功横幅,属于正常现象。
解决方法
- 调整登录逻辑
静默登录仅适合已有登录记录的用户自动续期,如果你需要触发授权弹窗、登录成功横幅,需要在静默登录失败时调用显式登录流程,代码参考:
private val RC_SIGN_IN = 9001 fun initGoogleClientAndSignin() { googleSignInClient = GoogleSignIn.getClient( this, GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build() ) // 先尝试静默登录 googleSignInClient?.silentSignIn()?.addOnCompleteListener { task -> if (task.isSuccessful) { val signInAccount = task.result!! achievementClient = Games.getAchievementsClient(this, signInAccount) leaderboardsClient = Games.getLeaderboardsClient(this, signInAccount) // 静默登录成功后主动触发显示Play游戏欢迎横幅 Games.getGamesClient(this, signInAccount).apply { setPopupsEnabled(true) showPlayGamesConnectUi() } } else { // 静默登录失败,拉起显式登录界面 startActivityForResult(googleSignInClient?.signInIntent, RC_SIGN_IN) } } } // 处理显式登录结果 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == RC_SIGN_IN) { val task = GoogleSignIn.getSignedInAccountFromIntent(data) if (task.isSuccessful) { val signInAccount = task.result!! achievementClient = Games.getAchievementsClient(this, signInAccount) leaderboardsClient = Games.getLeaderboardsClient(this, signInAccount) // 显式登录成功后会自动弹出顶部横幅,无需额外调用 } else { Log.e("Error", "signInError", task.exception) } } }
- 检查应用配置
- 确认Google Play Console中已经为你的应用开启Play Games服务,完成了应用关联、OAuth 2.0客户端ID配置
- 确认你本地测试用的应用签名、版本号和Play Console中上传的版本一致
- 测试设备已安装最新版Google Play服务、Google Play Games应用,测试账号已添加到Play Console的测试白名单中
- 特殊场景处理
如果已经完成显式登录、配置全部正确仍未显示弹窗,可以检查是否在设备的系统设置中关闭了Play Games应用的通知权限,该弹窗属于通知类弹窗,权限关闭后会无法显示。
内容的提问来源于stack exchange,提问作者Questions100
相关产品推荐
相关产品推荐

