Как решить проблему пропущенных приглашений Google Multiplayer RealTime - PullRequest
0 голосов
/ 06 февраля 2019

Иногда принятое приглашение от Google Play Games отсутствует.В настоящее время я использую код из многопользовательского руководства Google в реальном времени и добавляю проверку резервного копирования для ручной загрузки списка приглашений, если подсказка отсутствует.Как воспроизвести это поведение:

  1. Если пользователь какое-то время не использует приложение или в данный момент не выполняет вход
  2. Пользователь получает и принимает приглашение в реальном времени в многопользовательском режиме вПриложение Google Play Games
  3. Google Play Games открывает приложение
  4. Пользователь вошел или автоматически войдет в систему
  5. onConnected вызывается с использованием используемого GoogleSignInAccount
  6. Мультиплеер. Отсутствует EXTRA_INVITATION


private void checkForInvitation()
{
    if (mSignedInAccount == null) {
        return;
    }

    Games.getGamesClient(context(), mSignedInAccount)
    .getActivationHint()
    .addOnSuccessListener(
                        new OnSuccessListener<Bundle>() {
                              @Override
                              public void onSuccess(Bundle bundle) {

                                  if (bundle != null) {
                                      Invitation invitation = bundle.getParcelable(Multiplayer.EXTRA_INVITATION);
                                      if (invitation != null) {
                                          //... do something with the invitation
                                          return;
                                      }
                                  }

                                  checkForInvitationBackup();
                              }
                        }).addOnFailureListener(createFailureListener("There was a problem getting the activation hint!"));
}

private void checkForInvitationBackup()
{
    if (mInvitationsClient == null) return;

    mInvitationsClient.loadInvitations().addOnSuccessListener(new OnSuccessListener<AnnotatedData<InvitationBuffer>>() {
        @Override
        public void onSuccess(AnnotatedData<InvitationBuffer> invitationBufferAnnotatedData)
        {

            if (invitationBufferAnnotatedData != null) {

                InvitationBuffer invitationBuffer = invitationBufferAnnotatedData.get();
                if (invitationBuffer != null) {

                    if (invitationBuffer.getCount() > 0) {
                        Invitation invitation = invitationBuffer.get(0);
                        if (invitation != null) {
                            //... do something with the invitation
                        }
                    }
                }
            }
        }
    }).addOnFailureListener(createFailureListener("There was a problem getting the invitation list."));
}

Почему пакет пуст, а иногда нет?Как я могу справиться с этим лучше?

...