2014-03-06 60 views
0

我遇到了處理邀請的問題。 場景: 1.朋友邀請我到他的比賽 2.我通過在MenuActivity推送通知 3. 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()返回相同(取消)遊戲的邀請。

我試圖在我離開那個取消的遊戲之前運行declineRoomInvitation或dismissRoomInvitation,但沒有任何幫助。

+0

究竟是如何「離開」遊戲。你剛剛結束了這個活動還是什麼? – Ogen

+0

@Clay - 我使用Games.RealTimeMultiplayer.leave(getApiClient(),this,mRoom.getRoomId()); – user1483208

+0

他在開始後3秒離開遊戲;-) – user1483208

回答

1

好吧,我想我有一個想法。我不明白爲什麼這不起作用。

當你調用Games.RealTimeMultiplayer.leave(getApiClient(), this, mRoom.getRoomId());,正在輸入RoomUpdateListener其中有聽衆:onJoinedRoomonLeftRoomonRoomCreatedonRoomConnected

因此,這是你做什麼,當玩家離開遊戲時,他/她的onLeftRoom將被調用,當它被調用時,將消息發送到使用Games.RealTimeMultiplayer.sendReliableMessage其他球員,那麼當其他玩家接收到該消息,他/她將知道該玩家離開遊戲,因此您可以對該遊戲發出邀請null,因此當signInSucceeded被再次調用時,它不會嘗試接受對已取消遊戲的邀請。

我認爲這是實現它的最好方法。希望這有幫助:)

+0

有方法onPeerLeft(房間房間,列表字符串),所以沒有必要發送味精時有人離開,onPeerLeft會通知你,但你的答案幫助,開始後新的活動我會設置邀請爲null,看看會發生什麼:) – user1483208

相關問題