2014-04-18 103 views
3

我是新來開啓基於遊戲開發並嘗試開發回合制遊戲。我使用默認的UI來選擇球員Android基於回合制遊戲的Google Play服務,無法通過默認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(); 
    } 
} 

誰能告訴我在哪裏,我錯了?

回答

2

通知發生在第一個玩家(創建比賽的玩家)通過調用Games.TurnBasedMultiplayer.takeTurn()後輪到他,並且在創建比賽之後不立刻。

0

也可以試試this。如果沒有邀請(即使您的應用已關閉),帳戶級別限制可能會阻止它們。

相關問題