【发布时间】:2015-10-31 20:55:22
【问题描述】:
我有几个关于如何在我的应用中实现谷歌游戏服务的问题。 首先,在我检查了用户已登录并且客户端已连接后,我启动了
Intent intent = Games.TurnBasedMultiplayer.getSelectOpponentsIntent(mGoogleApiClient, 1, 1, true);
startActivityForResult(intent, RC_SELECT_PLAYERS);
向用户显示一个对话框,他们可以在其中选择对手。 从活动中获得结果后,我执行此代码
if (request == RC_SELECT_PLAYERS) {
Log.e(LOG_TAG, "Got RC_SELECT_PLAYERS result intent");
if (response != Activity.RESULT_OK) {
// user canceled
return;
}
// Get the invitee list.
final ArrayList<String> invitees = data.getStringArrayListExtra(Games.EXTRA_PLAYER_IDS);
// Get auto-match criteria.
Bundle autoMatchCriteria;
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);
} else {
autoMatchCriteria = null;
}
TurnBasedMatchConfig turnBasedMatchConfig = TurnBasedMatchConfig.builder()
.addInvitedPlayers(invitees)
.setAutoMatchCriteria(autoMatchCriteria)
.build();
// Create and start the match.
Games.TurnBasedMultiplayer
.createMatch(mGoogleApiClient, turnBasedMatchConfig)
.setResultCallback(new MatchInitiatedCallback());
}
开始比赛。问题是,我挑战的对手没有收到任何要求他加入游戏的通知。那么当用户收到加入游戏的通知时,我怎样才能捕捉到这个通知并向用户展示适当的内容呢?我应该寻找哪个意图结果?
在我的 MatchInitiatedCallback 中,我检查现在是哪一回合:
public class MatchInitiatedCallback implements ResultCallback<TurnBasedMultiplayer.InitiateMatchResult> {
private static final String LOG_TAG = "MatchInitiatedCallback";
@Override
public void onResult(TurnBasedMultiplayer.InitiateMatchResult result) {
// Check if the status code is not success.
Status status = result.getStatus();
if (!status.isSuccess()) {
Log.e(LOG_TAG, "showError() " + status.toString());
//showError(status.getStatusCode());
return;
}
TurnBasedMatch match = result.getMatch();
// If this player is not the first player in this match, continue.
if (match.getData() != null) {
Log.e(LOG_TAG, "Not my turn");
//showTurnUI(match);
return;
}
// Otherwise, this is the first player. Initialize the game state.
//initGame(match);
Log.e(LOG_TAG, "initGame()");
// Let the player take the first turn
//showTurnUI(match);
Log.e(LOG_TAG, "showTurnGui()");
}
}
但是这个代码甚至在我的对手选择加入之前就被执行了。 他不应该首先能够接受或拒绝游戏吗? 有人可以告诉我我这样做是否正确还是应该是这样?如果不是,应该如何正确实现?
编辑:我从文档中获取了所有这些代码。它确实展示了一些关于如何实现事物的代码示例,但没有展示代码如何组合在一起以及事物应该执行的顺序,或者如何处理通知等。
【问题讨论】:
标签: android android-intent google-play-services android-notifications google-play-games