2

この質問がここにあることを願っています。クライアント用のWebアプリケーションを開発しています。それは商人のための予定/見積もりを作成することを含み、いくつかのアドバイスが必要です。

基本的に、webappで作成された見積もりに追加できる製品があります。スマートフォンからモバイルアプリで見積もりを選択して見積もりを記入できるようにしたい。

私が直面している問題は、インターネット接続が常にあるとは限らないため、インターネットがあるときに同期できるように、見積もりデータをデバイスにオフラインで保存する必要があることです。

モバイルアプリを使用するプロセスは次のとおりです。

  1. ユーザーはWebアプリケーションから予定を取得し、それらを(できればデータベースに)保存します
  2. 接続がなくても、ユーザーは予定に見積もりを記入できます。
  3. ユーザーが見積もりを保存
  4. モバイルアプリは自動的に新しい見積もりをWebアプリケーションに送信します(接続されている場合)
  5. インターネットが利用可能な場合、ユーザーは手動でデータを同期します

Webアプリケーションは、予定の作成と製品の管理を処理します。モバイルデバイスは、製品の独自のコピーと、見積もりへの単なる参照を保存します。

したがって、ユーザーは予定のリストを見ることができます。アポイントメントを選択してから、製品の追加を開始します。

予定

アポイントメントID

説明

製品

id

説明

引用

id

アポイントメントID

製品番号

WebアプリケーションはPHPで開発されました。

私はWeb開発者であり、このプロジェクトで母国語(つまり、Objective-C)を学ぶ時間がないため、モバイルアプリでHTML5のオフラインストレージを利用したいと思います。Web SQLデータベースが継続されないことをいくつかの場所で読んだので、自分のオプションが何であるかはよくわかりません。

HTML5とJavaScriptを考えるコードの場合も、おそらくjQTouchまたはjQueryMobleを使用します。

誰かが私に何か提案や推奨事項を持っているなら、それは素晴らしいことです!

4

2 に答える 2

2

データをオフラインで保存するjQueryMobileアプリがあります。ユーザーは、接続時に完了したレコードをWebサービスにプッシュします(アプリはHTML5のオフライン機能も使用します)。これは、モバイルSafariでWeb SQL(WebKitおよびOperaではSQLite)を使用し、主要なデバイス(iPad / iPhone)で正常に動作しますが、デスクトップのChromeおよびSafariでも完全に機能します(Operaは試していませんが、明らかに、FirefoxやIEでは機能しません)。

いくつかの考慮事項:

  • ご指摘のとおり、WebSQLの将来はやや不確実です。代わりにIndexedDBを確認することをお勧めしますが、ブラウザーによっては、WebSQLをサポートする必要がある場合もあります。
  • ローカルデータベースのサイズには制限がありますが、完了のフラグが付けられたデータを「パージ」して頻繁に送信する場合は問題ありません(データベースあたり5MB程度なので、かなりの量になると思います)。
  • 私のアプリはajaxを介してSOAPWebサービスと通信し、私たちはすべて同じドメインにいます。ドメインが異なる場合は、CORS/リバースプロキシなどを確認する必要があります。
  • JavascriptでXMLをいじるのは好きではありませんが、XMLObjectifierを使用すると、その側面が簡単になります(XMLをJSONオブジェクトに解析します)
于 2011-07-14T14:31:25.177 に答える
0

PhoneGapアプリケーションは、レンダリングにHTML5とCSS3を使用し、ロジックにJavaScriptを使用します

つまり、アプリケーション内のクライアントのデータがアプリケーションの更新なしで変更されることを意図しているかどうかにかかわらず、2つの可能性があります。質問でおっしゃった情報からは判断できないので、それぞれの場合の答えを詳しく説明します。


クライアントのデータを更新する必要がない場合(アプリケーションを更新せずに)

この場合、クライアントのデータは静的であると見なします。このデータの出所は、アプリケーションを配布する前に、他のテキストや画像(または他のアセット)と同様にアプリケーションデータに含めるため、関係ありません。つまり、クライアントのリストはアプリケーションに関連付けられ、それらを変更するにはアプリケーションを更新する必要があります。

技術的には、クライアントのデータを静的ファイルとして追加するだけであることを意味します。独自のアプリケーションコードの真ん中にあるHTML5コードにすることも、アプリケーションが(JavaScriptを使用して)解析および表示する必要のある任意の種類のファイル(Jsonなど)にすることもできます。

ただし、保守性の目的(およびおそらく他の理由)でHTML5ソリューションを使用する場合は、クライアントのコンテンツをアプリケーションのコンテンツから分離することをお勧めします。これを行うには、クライアントのデータを含むHTML5 / CSS3ページを作成し、そのメソッドを使用してアプリケーションのページに含めます(または、この回答に記載されているようにpager.jsライブラリを使用できます)。

補足として、次のメソッドは、この場合のこのメソッドと同様に実行されます。もう少し複雑になるという欠点があります。

アプリケーションを更新せずにクライアントのデータを更新する必要がある場合

この場合、クライアントのデータは動的であると見なします。データをフェッチする方法のみがアプリケーションに保存されるため、データの出所は関連しています。残りは、アプリケーションを実行するデバイスによって実行されます。達成するのはより複雑ですが、この方法には、アプリケーションの更新を必要とせずにデータを継続的に更新できるという利点があります。

技術的には、アプリケーションのレイアウトと(グラフィック)デザインをHTML5 / CSS3で記述し、アプリケーションの動作(クライアントデータの取得、保存、クエリ、表示など)をJavaScriptでコーディングすることを意味します。

そのためには、JavaScript(アプリケーションのHTML5ファイルに埋め込まれている)を使用してクライアントの情報を取得してから、JavaScriptを再度使用してこれらの情報をPhoneGapStorageに保存する必要があります。次に、アプリケーションは、HTML5 / CSS3ファイル(おそらくアプリケーションのHTML5スケルトン)に記述されているレイアウト/デザインに従って、保存されている情報にアクセスして表示するために、 PhoneGapストレージ(JavaScriptを引き続き使用)にクエリを実行する必要があります。クライアントデータの論理レイアウト、CSS3 IDとそのデザイン/外観のクラス)。

常時オンラインのデバイスを使用している場合は、クライアントのWebサイトが稼働している限り、アプリケーションにリスト情報を保存する必要がないことに注意してください。ただし、クライアントのWebサイトがダウンした場合、またはデバイスがオフラインになった場合は、ローカルストレージが必要になります。

結論

つまり、アプリケーションが機能するためにインターネット接続を必要としない場合は、HTML5/CSS3データ内にリストを含めるのが安全です。それ以外の場合は、より複雑ですが、JavaScript / PhoneGapStorageソリューションを使用する必要があります。

于 2014-05-23T09:47:39.000 に答える