2

Android (および iOS) 用のアプリを作成し、ユーザーが写真を REST サーバーにアップロードできるようにしました。私たちが直面している問題は、ユーザーが携帯電話の信号がひどい場所にいて、WIFI がない場合があることです。そのため、事前に構築されたソリューションがあるかどうか、または利用可能なネットワークオプションが不十分な場合にこれらのアップロードを後で延期するための推奨されるパスがあるかどうか疑問に思っていました.

現在、Android では AsyncTask を使用して、キャプチャした画像のストリーム表現をアップロードしています。画像の最大サイズは 1280 にトリミングされており、もう 1 つはアスペクト スケーリングされているため、画像は大きくありません。

ユーザーは、私が想像する最大 2 時間信号がない可能性があるため、毎分アップロードを試みる必要はありません。さらに、複数のアップロードがある可能性があるため、何らかのキューが必要になると思います。

私は iOS アプリが何を利用しているのか確信が持てませんが、それが役立つかどうかはわかります。

4

2 に答える 2

6

最良のオプションは、写真を SD カードに保存し、そのパスをデータベースに入れることです。ここでのデータベースはキューのように機能します。そのため、ユーザーがインターネットにアクセスできるときはいつでも、アプリはデータベースにエントリがあるかどうかを確認し、アップロードを開始できます。写真をアップロードしたら、その記録をデータベースから削除します。

さて、アップロードに関する限り、AsyncTask ではなく Service で行うことをお勧めします。このようにして、AlarmManager を使用して定期的にサービスを呼び出し、アップロードするものがあるかどうかを確認できます。

この方法は、アプリケーションの 1 つでドキュメントに使用しました。それは魅力のように機能します。それが役に立ったことを願っています。

于 2012-07-05T14:26:54.010 に答える
2

iOS ではASIHTTPRequestを使用しましたが、現時点では他の解決策 ( MKNetworkKit )を見つけることができます。私はあなたがしていることとまったく同じようにアプリケーションを実行したので、私がしたことは次のとおりです。

  1. インターネットがあるかどうかを確認し、ある場合は続行し、そうでない場合は停止します。
  2. 1 枚の写真を送信してみてください。成功した場合は次の写真に進みます。そうでない場合は、写真をキューに残して次の写真に進みます。
  3. プロセスを繰り返します。

ユーザーが 20 枚の写真をキューに入れ、プロセスを開始したとします。1 日の終わりに、何が成功し、何が失敗したかを再度確認できます。もちろん、最初に失敗したものを再送信することもできます。

于 2012-07-05T14:26:35.153 に答える