6

オンライン Web アプリ用に iPhone アプリ バージョンを作成する予定です。私はまだ iPhone アプリの開発に慣れていないので、iPhone ネイティブを選択するか、iPhone ブラウザーで実行される Web アプリを選択するかがわかりません。

要件は実際にはかなり基本的なものです。iPhone アプリは、データを送信し、Web アプリでも使用されるデータベースからデータを取得する必要があります。ユーザーは webapps に同じアクセス権を持ちますが、webapps と iPhone アプリを使用するとユーザーエクスペリエンスが異なるため、これは iPhone に固有のものである必要があります。また、Apple ストアでのアプリケーションの販売にも関心があります。

あなたの経験に基づいて、この種の要件には iPhone ネイティブと Web アプリのどちらが適しているでしょうか? iPhone ブラウザーで動作するネイティブの iPhone アプリと Web アプリを構築する際の欠点は何ですか? また、ネイティブの iPhone アプリを構築するには、Objective-C のみに限定されますか? または、そのための他のフレームワークはありますか?

私に優しくしてください、私は炎上戦争を始めているわけではありません。

4

3 に答える 3

6

ケーキを食べて食べることもできます。

インスタンスを使用して、Web アプリとネイティブ アプリを簡単に混在させることができUIWebViewます。たとえば、Cocoa/Objective-C コードでパフォーマンスが重要な部分を実装したり、ネイティブとして書き直すには時間がかかりすぎる部分に WebKit ビューを挿入したりできます。

App Store での配布が必要な場合は、Web アプリ全体をネイティブ パッケージでラップすることもできます — PhoneGapを参照してください。

ユーザーがホーム画面にページを追加した場合、Safari 経由で起動されたように見えない純粋な Web アプリを開発することもできます — jQTouchを参照してください。

欠点:

Web アプリはネイティブ アプリケーションほど高速ではないかもしれませんが、HTML5 のオフライン サポートと、トランジションやアニメーションなどの WebKit 固有の拡張機能を使用すると、かなり遠くまで到達できます。必ずタッチ イベントを使用してください— Safari の遅延onclick

純粋な Web アプリを適切なネイティブ アプリケーションのように感じさせるのは困難です。たとえば、モバイル WebKit はposition:fixedトップ ナビゲーション バーを複製するために必要なサポートをサポートしておらず、Web ビューのスクロール速度はテーブル ビューとは異なります。修正可能ですが、大量のJavaScriptが必要です。

利点:

急速な発展。sでアプリを複製する必要があったときに、複雑なレイアウトに CSS/HTML がどれほど便利であるかを本当に感謝していますUIView(InterfaceBuilder は、半固定レイアウトでのみ使用できます)。

Apple が突然別のものを嫌ったり、禁止したりすることはありません。アプリが AppStore から削除された場合、ユーザーが Web 経由でアプリにアクセスできるようにすることができます (Google は Voice アプリと Latitude アプリでこれを行いました)。

Web アプリを Android やその他 (WinMo、HP Pre、最新の BlackBerry など) に移植する方が簡単です。Apple は第 1 位ですが、そのマインド シェアは市場シェアに比例しません。他の人は追いついています。

ネイティブを選ぶなら

Apple の方法で行う必要があります: Objective-C と Cocoa (アプリケーションの一部をプレーンな C または C++ で実行できます)。このテーマに関するチュートリアルや本はたくさんあるので、ここでは繰り返しません。ちょっとしたランダムなアドバイス:

  • plist は、iPhone の「ネイティブ」形式であるにもかかわらず、クライアントとサーバー間の通信には最適ではありません。XML plist は、XML 標準でも高いオーバーヘッドがあり、バイナリ plist を生成してデバッグするのは面倒かもしれません。JSONは実際には高速で、通常は簡単に操作できます。

  • ほんの少しの情報だけを取得すると、NSConnection事態が複雑になるだけです。[NSData dataWithContentsOfURL:]経由で起動されたメソッドで簡単に使用できますperformSelectorInBackground:

  • UITableViewがスクロールしている間、通知は配信されません。テーブルに画像を遅延ロードする場合は、コールバックを使用してそれらをロードおよび設定します。

于 2010-05-16T00:51:30.810 に答える
1

iTunes App Storeにアプリを置きたい場合は、Objective-Cでアプリを作成する必要があります。これは、DaringFireballから引き出されたiPhoneOS4.0開発者契約からの引用です。最も関連性の高いセクションを強調しました。

3.3.1 —アプリケーションは、Appleが規定する方法でのみ文書化されたAPIを使用でき、プライベートAPIを使用または呼び出すことはできません。アプリケーションは、iPhone OS WebKitエンジンによって実行されるObjective-C、C、C ++、またはJavaScriptで最初に作成する必要があり、C、C ++、およびObjective-Cで作成されたコードのみがコンパイルされ、ドキュメント化されたAPIに直接リンクできます(例:中間の翻訳または互換性レイヤーまたはツールを介してDocumentedAPIにリンクするアプリケーションは禁止されています)。

もちろん、これはOS 3.1または3.2には適用されません。現在、OS 4.0がリリースされると、Appleがそのようなツールを使用した既存のアプリケーションを遡及的に削除するかどうかは不明です。理論的には、4.0がリリースされる前にアプリを公開して運が良ければ、PhoneGapのようなものを利用できるかもしれませんが、現時点でこれらの種類のツールを使用するのは非常に大きな賭けのようです。 。

とは言うものの、Objective-Cは実際に学ぶのはそれほど難しいことではありません。主な構文は、Web開発の知識がほとんどないか、長所と短所について話すことはできませんが、すべてがWebアプリに設定されていることです[someObject doSomething];[someObject doSomethingWith:thisObject];上記のハイブリッドオプションまたは純粋にWebベースのいずれかに傾倒することをお勧めします。

于 2010-05-16T01:40:22.223 に答える
1

Noah が言及しているPhoneGapは、HTML+javascript 開発を行い、配布用にパッケージ化し、iPhone の多くの優れたネイティブ機能を利用するための手段であることは間違いありません。

残りはすべて、共有していないいくつかの要素に依存しています。UI/検索からの応答をどれだけ速くスムーズにしますか? これは、Web アプリケーションのレイテンシーが 3G を超えても、ローカルでより高速に表示するための代替手段を探すように促す可能性がある場所です (すべてローカル、または Objective-C を使用することもできます)。

Objective-Cを直接実行したい場所を探すための他の場所は、あなたの道にあるようには聞こえませんが、より重いグラフィックスとアニメーションに関する操作です(ただし、javascript + CanvasとHTML5は私を嘘つきにすることですカメラやマイクを使用してマルチメディアを記録する、またはかなり大量の集中的な処理を必要とするもの。最後の質問は、どこでその作業を完了させたいかということです。サーバー上 (典型的な Google スタイルの選択) またはデバイス上?

于 2010-05-16T01:05:21.547 に答える