1

Play Game Services のボタン クリッカー デモを試してみたところ、OnInvitationReceivedListener を起動する運がありませんでした (数百回に 1 回)。

私は here stackoverflow answer 1と here stackoverflow answer 2を見て、私の内輪の一部であるテスト アカウントを使用するようにしました。(家族は大丈夫?)

テスト中:

他のユーザーにログインする前に招待状を送信しようとしました (gameHelper onConnected(Bundle hintConnection) に null 以外の値を設定したことはありません)。

両方のアカウントがログインした後で、招待状を送信しようとしました。ログには何かが起こっていることが示され、招待を送信するための戻り値がないため、招待がどのように行われているかについては何もわかりません)

(送信者が待合室に入った直後に) [招待状を表示] に移動すると、招待状がそこにあります。また、GamesClient の loadInvitations メソッドを使用して、invitationBuffer をそのリスナーに戻すこともできます。ユーザーの 1 人をログアウトすると、他のテスト アカウントを招待したときにステータス バーに招待通知が表示されることがあります (時間の長さは、数分から 30 分後までさまざまです)。招待状が送信されており、ドキュメントに記載されているように、おそらく何かによって傍受されています

public void registerInvitationListener (OnInvitationReceivedListener リスナー)

現在サインインしているユーザーの着信招待をインターセプトするリスナーを登録します。リスナーがこの方法で登録されている場合、このクライアントが接続されている限り、受信した招待はステータス バー通知を生成しません。

一度にアクティブにできるリスナーは 1 つだけであることに注意してください。別のリスナーが以前に登録されているときにこのメソッドを呼び出すと、元のリスナーが新しいリスナーに置き換えられます。パラメータ 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); 
  ...
}

適切な 2 つのコールバックを登録した後、ゲームプレイ中に招待通知を受け取るようになりました。

于 2013-08-10T17:54:15.077 に答える