用于回合制游戏的 Android Google Play 服务,无法使用默认 UI 接收邀请

标签 android google-play-services

我是回合制游戏开发的新手,正在尝试开发一款回合制游戏。我使用默认 UI 来选择玩家

Intent intent = Games.TurnBasedMultiplayer.getSelectOpponentsIntent(getApiClient(), 1, 1, true);
startActivityForResult(intent, RC_SELECT_PLAYERS);

当我选择播放器并说播放时,其他播放器应该会收到通知。但是该玩家没有收到邀请/通知。

@Override
public void onSignInSucceeded() {

    updateLayouts();   

    Games.Invitations.registerInvitationListener(getApiClient(), this);
            // developer document says that above line is not required
            // include or exclude for me it is not making any difference

}

@Override
public void onInvitationReceived(Invitation invitation) {
    Toast.makeText(
            this,
            "An invitation has arrived from "
                    + invitation.getInviter().getDisplayName(), Toast.LENGTH_LONG)
                    .show();

    Log.d(TAG, "Invitation arrived from " + invitation.getInviter().getDisplayName());



}

这是我的 onActivtityResult

@Override
public void onActivityResult(int request, int response, Intent data) {
    super.onActivityResult(request, response, data);

    if (request == RC_LOOK_AT_MATCHES) {
        // Returning from the 'Select Match' dialog

        if (response != Activity.RESULT_OK) {
            // user canceled
            return;
        }

        TurnBasedMatch match = data
                .getParcelableExtra(com.google.android.gms.games.multiplayer.Multiplayer.EXTRA_TURN_BASED_MATCH);

        if (match != null) {
            updateMatch(match);
        }

        Log.d(TAG, "Match = " + match);
    } 
    else if (request == RC_SELECT_PLAYERS) {
        if (response != Activity.RESULT_OK) {
            // user canceled
            return;
        }

        // get the invitee list
        final ArrayList<String> invitees =
                data.getStringArrayListExtra(Games.EXTRA_PLAYER_IDS);

        Log.d(TAG, "Invitees count = " + invitees.size());
        for(int i=0; i<invitees.size(); i++){
            Log.d(TAG, invitees.get(i));
        }

        // get auto-match criteria
        Bundle autoMatchCriteria = null;
        int minAutoMatchPlayers = data.getIntExtra(
                Multiplayer.EXTRA_MIN_AUTOMATCH_PLAYERS, 0);
        int maxAutoMatchPlayers
        = data.getIntExtra(
                Multiplayer.EXTRA_MAX_AUTOMATCH_PLAYERS, 0);
        if (minAutoMatchPlayers > 0) {
            autoMatchCriteria
            = RoomConfig.createAutoMatchCriteria(
                    minAutoMatchPlayers, maxAutoMatchPlayers, 0);

            Log.d(TAG, "minAutoMatchPlayers > 0");

        } else {
            autoMatchCriteria = null;
            Log.d(TAG, "minAutoMatchPlayers <= 0");
        }

        TurnBasedMatchConfig tbmc = TurnBasedMatchConfig.builder()
                .addInvitedPlayers(invitees)                    
                .setAutoMatchCriteria(autoMatchCriteria).build();


        // kick the match off
        Games.TurnBasedMultiplayer
        .createMatch(getApiClient(), tbmc)
        .setResultCallback(new ResultCallback<TurnBasedMultiplayer.InitiateMatchResult>() {
            @Override
            public void onResult(TurnBasedMultiplayer.InitiateMatchResult result) {
                processResult(result);
            }
        });

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        showSpinner();
    }
}

谁能告诉我哪里出错了?

最佳答案

通知会在第一个玩家(创建比赛的人)通过调用 Games.TurnBasedMultiplayer.takeTurn() 开始轮到他之后发生,而不是在比赛创建后立即发生。

关于用于回合制游戏的 Android Google Play 服务,无法使用默认 UI 接收邀请,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23147749/

相关文章:

android - 为什么在导航 Controller 中实现包含时出现 StackOverflowError?

安卓安装referrer1.1 bug

android - 发送safetynet兼容性检查请求是否有配额限制

java - 如何在android上的谷歌地图中的地理点之间绘制虚线

android - 为什么 setEnabled(false) 没有停用按钮

android - 具有循环依赖的 Firebase 数据结构

android - 是否有一个简单的 Activity 示例可以将 Play Services 排行榜和成就集成到 Android Studio 项目中?

android - 将 Google Play 服务添加到 gradle (Android Studio) 不起作用

android - 添加分析后错误 : Program type already present: com. google.android.gms.internal.measurement.zzdz

gradle - 了解Gradle配置文件报告的任务顺序