【问题标题】:Android turn based game listeners not workingAndroid回合制游戏侦听器不起作用
【发布时间】:2015-12-15 01:59:14
【问题描述】:

当玩家轮流时,我会在通知栏中收到通知,而不是在游戏运行时收听它

  1. 实现 OnInvitationReceivedListenerOnTurnBasedMatchUpdateReceivedListener

  2. onConnected(Bundle connectionHint) 中,我添加了 Games.Invitations.registerInvitationListener(mGoogleApiClient, this)Games.TurnBasedMultiplayer.registerMatchUpdateListener(mGoogleApiClient,这个)

  3. 覆盖这些方法

    @Override
    public void onTurnBasedMatchReceived(TurnBasedMatch match) {
        Toast.makeText(this, "A match was updated.",Toast.LENGTH_LONG).show();
    }
    
    @Override
    public void onTurnBasedMatchRemoved(String s) {
        Toast.makeText(this, "A match was canceled.",Toast.LENGTH_LONG).show();
        finish();
    }
    
    @Override
    public void onInvitationReceived(Invitation invitation) {
        Toast.makeText(this, "An invitation received.",Toast.LENGTH_LONG).show();
    }
    
    @Override
    public void onInvitationRemoved(String s) {
        Toast.makeText(this, "An invitation removed.",Toast.LENGTH_LONG).show();
    }
    

我无法获取收听邀请/通知的代码。

【问题讨论】:

    标签: android google-play-games


    【解决方案1】:

    如果您通过单击通知来开始游戏,则比赛将作为“connectionHint”传递给 onConnected()。您可以使用以下代码检查它:

     public void onConnected(Bundle connectionHint) {
            Log.d(TAG, "onConnected(): Connection successful");
    
            // Retrieve the TurnBasedMatch from the connectionHint
            if (connectionHint != null) {
                mTurnBasedMatch = connectionHint.getParcelable(Multiplayer.EXTRA_TURN_BASED_MATCH);
    
                if (mTurnBasedMatch != null) {
                    if (mGoogleApiClient == null || !mGoogleApiClient.isConnected()) {
                        Log.d(TAG, "Warning: accessing TurnBasedMatch when not connected");
                    }
    
                    updateMatch(mTurnBasedMatch);
                    return;
                }
            }
    
            // handle registering callbacks and updating status here....
        }
    

    只有当您想在应用程序运行时在应用程序中处理这些通知时才需要侦听器,因此您不需要让玩家通过玩游戏再回到您的应用程序的通知栏.

    【讨论】:

    • 已经搞定了,问题是在游戏运行的时候,其他玩家轮到了,游戏没有检测到,我在通知栏收到通知,轮到我了
    • 你的意思是 onTurnBasedMatchReceived() 没有被调用?我构建了示例,我看到了 toast 消息: Toast.makeText(this, "A match was updated.",Toast.LENGTH_LONG).show();并且在 Play 管理中心的关联应用配置中启用了回合制?
    • 是的,它永远不会被调用,基于回合和实时启用,您介意分享您构建的示例吗?
    • 我构建了 SkeletonTbmp 样本,它是 github.com/playgameservices/android-basic-samples 的一部分
    • 我也构建了它,但仍然从示例 xD 中得到通知
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2020-08-17
    • 2016-08-17
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多