在尝试 Play 游戏服务的按钮点击器演示时,我没有运气让 OnInvitationReceivedListener 触发。
我已经查看了这个 Stack Overflow 答案和这个 Stack Overflow 答案,并确保使用属于我内部圈子的测试帐户。 (家庭够好吗?)
测试中:
我尝试在登录其他用户之前发送邀请(我从未让 gameHelper onConnected(BundlehintConnection) 具有非空值)。
我尝试在两个帐户登录后发送邀请。(有一次收到通知并弹出顶部的视图,要求玩,就是这样)并且等待、等待、等待任何东西触发(日志中没有任何内容显示发生任何事情,并且由于发送邀请没有返回值,因此无法查看邀请的执行情况)
我可以(在发件人进入等候室后)前往“查看邀请”,邀请就在那里。我还可以使用 GamesClient loadInvitations 方法,并将invitationBuffer 返回到该侦听器中。如果我注销其中一个用户,那么当我邀请另一个测试帐户时,有时会在状态栏中收到邀请通知(时间长度从几分钟到最多半小时不等),因此我知道邀请正在被发送出去,并且很可能被某些东西拦截,正如文档所述:
public void registerInvitationListener(OnInvitationReceivedListener监听器)
注册一个侦听器来拦截传入的邀请 当前登录的用户。如果通过该方法注册了一个监听器, 传入的邀请不会生成状态栏通知,因为 只要该客户端保持连接。
请注意,一次只能有一个侦听器处于活动状态。调用这个 先前注册的另一个侦听器的方法将替换 原来的听众与新听众。参数监听器 收到新邀请时调用的侦听器。这 在主线程上调用侦听器。
我的测试显示第一部分正在工作。
老实说我不知道第二部分;正如我所说,我永远无法让听众着火!
有什么方法可以获得有关邀请的反馈吗?如果没有,是否需要采取任何其他步骤来让侦听器触发?
我也遇到了同样的问题。
我不使用
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);
...
}
注册正确的两个回调后,我现在在游戏过程中收到邀请通知。