0

問題: onRoomCreated は 5% の確率で STATUS_NETWORK_ERROR_NO_DATA を返します。理由はわかりません。

このゲームは、約 16 か月の開発期間 (マニフェストまたは Google Play コンソールで「アクセス許可」が欠落しているという問題はありません) は問題なく動作しましたが、Google Play サービス 29 以降 (それは「疑わしい」... 無関係である可能性があります)、これは予測不可能です。動作が開始され、それ以降のルーム作成の試みがブロックされています (ゲームを再起動した後でも、同じ間違った statusCode が繰り返されます)。

再び機能させる唯一の方法は、10 ~ 15 分後にゲームを再起動するか、デバイスを再起動することです (通常は機能しますが、常に機能するとは限りません)。

問題は 3 つの異なるデバイスで同じです (ここにはエミュレーターはありません)。

この問題 (SO およびその他の場所) について私たちが発見したことは、新しい部屋を作成しようとする前に部屋を離れない (RealTimeMultiplayer.leave(...)) ことに関連している可能性があるということです。そのため、新しいルームを作成する前に、少なくとも「onLeftRoom」の最後 (さらに 3 秒) 待っています。無駄に。

明らかに、推奨されるガイドラインに従っています: onCreate で GoogleApiClient をインスタンス化し、onStart で .connect を、onStop で .disconnect をインスタンス化します (.connect が途中であっても)...

また、これは「NETWORK_ERROR」であるはずなので、ルームを作成するたびにインターネット接続を (ping で) 検証していることにも注意してください。

この問題に関する情報がある場合、またはデバイスを再起動せずにこの statusCode の後に Google Play にルームを作成させる方法を知っている場合は、お知らせください。どうもありがとう。

4

1 に答える 1

1

[更新 2]: アプリは、自動化された部屋の作成を停止するように書き直されました (したがって、リクエストの頻度が低くなります)。そして...何も...同じバグ/問題/あなたの名前は...何度も...その後、Google Play はアプリ「Google Play ゲーム」(およびおそらく「サービス」) を更新しましたが、うまくいきました: 2 週間で 1 つの STATUS_NETWORK_ERROR_NO_DATA だけです... [編集済み] であるため、今は 2 か月間眠ります。

[更新]:この投稿によると、リクエストの頻度を制限するために STATUS_NETWORK_ERROR_NO_DATA が使用されます。ルームの作成と終了は自動化されているため、これが決定的な答えになる可能性があります。検証されたかどうかはまた更新します。直接関係はありませんが、部屋を閉じないとエラーが発生するため、この回答の残りの部分は残しておきます。[更新の終わり]

この予測不可能な動作に対する答えは次のとおりです (SO から来たものではありませんが、まだ興味がある人もいるかもしれません): "onStart" と "onStop" では、Google Play Services へのすべての呼び出し/要求 (mGoogleApiClient を使用するかどうかに関係なく) を行う必要があります。 「super.onStart();」の前に および「super.onStop();」。

それ以外の場合は、「super.onStop();」の後に来るもの 終了する前に中断されます (デバイスの速度と負荷によってランダム性が追加されます)。これは、開いているルームへの「.leave」の呼び出しが失敗し、新しいルームの作成が妨げられることを意味します (したがって、STATUS_NETWORK_ERROR_NO_DATA エラー)。

また、変数 mGoogleApiClient は static として宣言しないでください。また、忘れずに「mGoogleApiClient.disconnect();」を呼び出してください。「onStop」で(他の場所で推奨されている場合、例の「ButtonClicker」はそれを行いません)。

于 2016-02-09T15:04:17.207 に答える