我处理邀请时遇到问题。 场景: 朋友邀请我参加他的比赛 我通过推送通知加入游戏 3. MenuActivity中的onSignInSucceeded()运行我的主要游戏活动
@Override
public void onSignInSucceeded() {
Games.Invitations.registerInvitationListener(getApiClient(), this);
if (getInvitationId() != null) {
Intent intent = new Intent(getApplicationContext(), FindRoomActivity.class);
intent.putExtra(BundleConstants.FRIEND_GAME_CLIENT, true);
intent.putExtra(BundleConstants.INVITATION_ID, getInvitationId());
startActivity(intent);
}
}
4.朋友在游戏结束前离开游戏,在我的屏幕弹出窗口显示,确认后我回到了我的Menuactivity,然后再次运行代码形式onSignInSucceeded并再次getInvitationId()返回相同(取消)游戏的邀请。 / p>
在我离开取消的游戏之前,我试图运行declineRoomInvitation或者dismissRoomInvitation,但没有任何帮助。
答案 0 :(得分:1)
好的,我想我有个主意。我不明白为什么这不起作用。
当您致电Games.RealTimeMultiplayer.leave(getApiClient(), this, mRoom.getRoomId());
时,您输入的RoomUpdateListener
有听众:onJoinedRoom
,onLeftRoom
,onRoomCreated
和onRoomConnected
。< / p>
所以这就是你所做的,当一个玩家离开游戏时,他/她onLeftRoom
将被调用,当它被调用时,使用Games.RealTimeMultiplayer.sendReliableMessage
向另一个玩家发送消息,然后当另一个玩家收到此消息,他/她将知道玩家离开了游戏,因此您可以为该游戏null
发出邀请,这样当再次调用signInSucceeded
时,它将不会尝试接受邀请取消游戏。
我认为这是实施它的最佳方式。希望这有所帮助:)