1

まず、皆さんに感謝します。

前提条件:アプリケーションで消耗品を提供しています。 製品:

  1. リスト項目
  2. ユーザーは iap でアイテムを購入します。
  3. アプリケーションがupdatedTrancactions (Transaction) を受け取る前に、ネットワークが切断されました。

したがって、サーバーには受信を確認するためのデータがありません。ユーザーも「仮想通貨」を手に入れることはできません。

この問題を解決する方法を誰か教えてくれませんか、またはヒントを教えてください。どうもありがとう。

4

1 に答える 1

1

その標準的なクライアントサーバーの問題。クライアントとサーバー間の接続が切断された場合 (タイムアウトまたはその他の理由により)、一般的な方法は、要求を再試行することです。しかし、API 呼び出しが冪等ではなく、API を複数回呼び出すとシステムの状態に何度も影響を与える可能性がある場合は、より巧妙なことを行う必要があります。あなたが持っているいくつかのオプション -

  1. ローカル データベースを用意します。購入が発生したら、まずローカル DB の状態を更新します。クライアントからサーバーへ DB を遅れて遅延同期します。coredata または sqlite が優れていると聞きました。ユーザーはこれを認識していません。DB はローカルであるため、UI はユーザーにとって非常に機敏になります。
  2. 2 番目のアプローチは、HTTP 呼び出しが失敗した場合です。呼び出しが成功するまで再試行を続けます。
  3. API が冪等でない場合は、トークンの概念が必要です。つまり、複数回呼び出された同じトークンを使用した API 呼び出しは、最初の呼び出しが成功したかどうかが最初にサーバー側でチェックされ、失敗した場合にのみ再度実行されます。元。これは、銀行ソリューションにおいて非常に重要です。タイムアウトや再試行を繰り返すようにプログラムされた誰かが原因で、銀行口座から複数の引き落としが発生することを想像してみてください。

今思いつくのはこれくらいです。試してみて、何が効果的だったか教えてください...

于 2013-02-22T08:02:05.793 に答える