1

在试用 Play 游戏服务的按钮点击器演示时,我没有任何运气(好吧,数百次中有 1 次)让 OnInvitationReceivedListener 触发。

我在这里查看了stackoverflow answer 1和 here stackoverflow answer 2,并确保使用属于我的核心圈子的测试帐户。(家庭够好吗?)

在测试中:

我曾尝试在登录其他用户之前发送邀请(我从未让 gameHelper onConnected(Bundle hintConnection) 具有非空值)。

我已经尝试在两个帐户都登录后发送邀请。(1 次通过通知并在顶部弹出视图要求播放,就是这样)并且等待,等待,等待任何触发(没有在日志中显示任何发生的事情,并且由于发送邀请没有返回值,所以没有什么可以看到邀请是如何做的)

我可以(在发件人进入等候室之后)去查看邀请,邀请就在那里。我还可以使用 GamesClient loadInvitations 方法,并在该侦听器中取回邀请缓冲区。如果我注销其中一个用户,那么当我邀请另一个测试帐户时(时间长度从几分钟到半小时后不等),我(有时)会在状态栏中收到邀请通知,所以我知道邀请正在发出,并且很可能被文件所说的某些东西截获

public void registerInvitationListener(OnInvitationReceivedListener 监听器)

注册一个侦听器以拦截当前登录用户的传入邀请。如果通过此方法注册了侦听器,则只要此客户端保持连接状态,传入的邀请就不会生成状态栏通知。

请注意,一次只能有一个侦听器处于活动状态。在先前注册了另一个侦听器时调用此方法会将原始侦听器替换为新侦听器。参数 listener 收到新邀请时调用的监听器。在主线程上调用侦听器。

所以我的测试显示第一部分正在工作(呵呵,在输入此内容时刚刚收到 29 分钟前发送的邀请的状态栏通知......)

老实说,我不知道第二部分,正如我所说,我永远无法让听众开火!

那么,有什么方法可以得到关于邀请的反馈吗?如果没有,是否有任何其他步骤可以让监听器触发?

4

1 回答 1

2

我遇到了同样的问题。

我不使用BaseGameActivity类。

根据https://developers.google.com/games/services/android/multiplayer#during_gameplay,注册监听器的正确方法是在onConnected()回调中。

我遵循了上述指示,但从onConnected()未被调用,因此我InvitationListener从未注册过。

我的问题是我没有明确请求 Plus 客户端,而且我根本没有注册正确的回调。实现ConnectionCallbacks和覆盖该OnConnected()方法是不够的 -GameHelper不会为您注册回调。

public class MainActivity extends AndroidApplication implements
    ..., ConnectionCallbacks,
    OnInvitationReceivedListener {

...
@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  gameHelper = new GameHelper(this);
  gameHelper.setup(this, GameHelper.CLIENT_GAMES | GameHelper.CLIENT_PLUS);
  gameHelper.getPlusClient().registerConnectionCallbacks(this);
  ...
}

@Override
public void onConnected(Bundle connectionHint) {

  gameHelper.getGamesClient().registerInvitationListener(this); 
  ...
}

注册正确的两个回调后,我现在在游戏过程中会收到邀请通知。

于 2013-08-10T17:54:15.077 回答