谷歌播放多人游戏,如何在应用关闭时收到邀请

时间:2014-02-02 22:03:20

标签: android google-play-services

我在谷歌播放服务(多人游戏)中发现的问题是被邀请者必须已经打开应用程序以响应邀请。

即使应用已关闭(背景),我也无法在被邀请者电话上显示邀请吗?谢谢

4 个答案:

答案 0 :(得分:3)

如果您向游戏运行的玩家发送邀请,则应在游戏内触发OnInvitationReceivedListene r。

如果您向未运行游戏的玩家发送邀请,则其手机上的Google Play服务应收到请求。然后玩家可以接受或拒绝该邀请。

如果他接受邀请,您的游戏将会启动,ConnectionCallbacks.onConnected()将会被包含GamesClient.EXTRA_INVITATION的捆绑包触发。使用此invitation对象,您可以加入适当的房间。

请注意,我在 Google Play Services SDK版本中遇到过错误。 3.2.65 - onConnected回调中的bundle不返回邀请ID。 这似乎是在 4.0.30 中修复的。

答案 1 :(得分:2)

我遇到了同样的问题,我不得不解决其他问题。更重要的是,上述答案中的许多链接都被打破了。所以我必须自己做,这就是我做到的。 注意:我正在使用从示例游戏中获得的gamehelper类。进行适当的更改

public void checkInvites()
{
    if(!mHelper.isSignedIn()) return;
    PendingResult<LoadInvitationsResult> invs = Games.Invitations.loadInvitations(mHelper.getApiClient());
    invs.setResultCallback(new ResultCallback<LoadInvitationsResult>(){
        @Override
        public void onResult(LoadInvitationsResult list) {
            if(list==null)return;
        if(list.getInvitations().getCount()>0)invitationInbox();
        }});
}

此回调invitationInbox()方法可打开邀请收件箱。

 public void invinbox() 
 {       
         Intent intent = Games.Invitations.getInvitationInboxIntent(mHelper.getApiClient());
            startActivityForResult(intent, RC_INVITATION_INBOX);    }        
    }

优点是您可以随时随地拨打checkInvites()以检查是否有任何待处理的邀请。

答案 2 :(得分:0)

根据Invitation Acceptance Phase documentation

  

发起游戏的玩家会自动加入房间。多人游戏的受邀者将在移动设备上看到通知,以提示他们加入游戏。如果他们接受邀请,您的应用必须发出API调用才能将播放器加入与该邀请相对应的会议室。

     

Play游戏服务通过ConnectionCallbacks.onConnected()方法通知被邀请者。回调方法传递connectionHint Bundle。您的应用可以使用Invitation密钥从此捆绑包中检索GamesClient.EXTRA_INVITATION对象。

正如Invite Players option documentation中所述,您可以使用GamesClient.getSelectPlayersIntent()RoomConfig.Builder.addPlayersToInvite()返回的所选被邀请者在创建房间时向所选玩家发送邀请,该通知将显示为其他玩家的通知设备

答案 3 :(得分:0)

我看到我的Activity类中的onConnected()没有被调用,但它确实调用了GameHelper类中的onConnected()方法。