0

私は書かれたアプリケーションを持っていて、Monotouchそれが提供する1つの機能は写真を撮ることであり、それはSybase Sql Anywhereサーバー上のデータベースに同期されます。このメカニズムはWindows、アプリケーションのバージョンでは正常に機能していますが、iPadまたはiPhoneiOSのデータベースに写真を保存することに関する技術的な問題が発生しています。Sybase Ultralite非常に簡単に言えば、iPhoneで解像度を非常に低く設定すると写真は正しく保存されますが、解像度が高いと失敗します。この問題は、保存されている画像データのサイズに関連しています。のiPad場合、写真は通常、で撮影した写真よりも大きいため、データベースへの保存は。よりiPhoneも頻繁に失敗します。iPadiPhone

とにかく、それは私たちの状況の背景に過ぎUltraliteず、実際の問題はこの質問の焦点では​​ありません。ここで私が探しているのは、この機能を提供するための代替ソリューションObjective-Cまたは)です。Monotouch私はデータベースの複製に多くの経験があるので、すぐにローカルデータベースに保存してから、写真データをサーバーに複製することを考えています。しかし、おそらくこれを解決するためのより良い方法がありますか?

ソリューションでは、アプリケーションが次のことを実行できるようにする必要があります。

  • 写真を保存して、ローカルで利用できるようにします(アプリケーションのシャットダウン後またはデバイスの再起動後でも)
  • インターネット接続が常に利用できるとは限らないため、写真をオフラインで撮影して保存できるようにする必要があります。
  • 画像データをサーバーデータベースに同期するか、バックオフィスのアプリケーションが写真を取得できるようにURLを同期します。明らかに、同期の時点で、アプリケーションはオンラインである必要があります。

画像データを同期せずにこの機能を提供できるソリューションやAPIを誰かが提案できますか?画像をクラウドに保存してから、バックオフィスで写真を取得するために使用できるURLのみを同期するという方針に沿って考えています。助言がありますか?

4

1 に答える 1

1

あなたが書いたことから、私はあなたがiOSデバイス上で画像を正しく永続化しないことを提案するかもしれません。それらのメモリは非常に限られており、HRイメージのバッチをRAMに保持すると、メモリの警告とアプリケーションのクラッシュが発生します。CoreDataディスクに保存されているイメージへのローカルリンクを保存するためにを使用することを検討する必要があります。UIImagePickerControllerUIImageを取得してアプリケーションのDocumentsディレクトリに保存できるデリゲートコールバックに精通していると思いますので、省略します。インターネット接続に依存していないためUIImagePickerController、「写真をオフラインで撮影して保存できるようにする必要がある」とはどういう意味かわかりません。AVFoundationしたがって、画像をオフラインで保存するには、これらのいずれかを使用してください(UIImagePickerControllerカメラ画面にカスタムUIを表示する必要がなく、作業を開始するのがはるかに簡単な場合は、より望ましいです)。複数の画像を同時に同期する必要がある場合は、UIProgressBarを表示して画像をキューにアップロードする必要がありますが、作成する各RESTリクエストは、一度に1つの画像をアップロードするために使用されるマルチパートデータリクエストです。このように、メモリ管理に問題はありません。撮影した画像にHR品質を使用することもでき、最低のものを使用する必要はありません。HTTP接続の場合、ASIHTTPRequestの使用を検討することをお勧めします。これは、操作が非常に簡単で、マルチパートリクエストの時間を節約できる可能性があるためです。

于 2012-07-31T08:52:26.857 に答える