モバイルウェブアプリとphonegapアプリに同じコードベースを使用することは賢明ですか?彼らは似ていることを意図しています、phonegapのバージョンはちょうど私たちがもっとできるようになります。私たちはそれがphonegapで実行されていないかどうかを検出し、phonegap APIへの呼び出しを隔離することができますか、それらを分離するのがより合理的ですか?phonegapとwebに同じコードベースを使用していますか?
答えて
私は同じコードベースを使用します。 PhoneGapのポイントは、モバイルサイトをアプリに変換することです。フィーチャを検出し、必要に応じて実在するものをスクリーニングすることはそれほど困難ではない。別々のコードベースの問題は、通常、コンテンツとスタイルを二重に処理するコストです。必要であれば、それらを共有リソースに分けて、実行時/アクセス時にバンドルすることができますが、個人的にはすべて一緒に保つことになります。
このブログでは、検出の問題について説明しています(コメントも参照してください):http://bennolan.com/2011/08/22/phonegap-detection.html。それの要点はif (window.PhoneGap){...}
リンクありがとうございました – fancy
です。確かに同じコードベースのほとんどを使用できます。 いくつかのphonegap APIはhtml5(例えばlocalStorage)と同じですので、コードに違いはありません。
phonegap Buildサービスを使用している場合、phonegap.js/cordova.jsスクリプトファイルがプロジェクトルートに追加されます。あなたのhtmlにすべての時間を含めるだけです。次に、あなたのアプリケーションがPhoneGapの中に実行されているかどうかを検出することができます
var isPhonegap = function() {
return (typeof(cordova) !== 'undefined' || typeof(phonegap) !== 'undefined');
}
if (isPhonegap()) {
// phonegap.js/cordova.js exists.. now let's handle the onDeviceReady event
} else {
// in-browser
}
あなたには、いくつかの一般的なスタートアップコードが必要な場合は、関数の中でそれを入れて、onDeviceReadyハンドラと上記の他にブロックからこの関数を呼び出します。
呼び出しているphonegapのapiがhtml5と同じ名前ではない場合(たとえば、Moz *またはWebKit *というプレフィックスがあるため)、新しい名前の中に両方を囲みます。例えば:
var requestFileSystem = (isPhonegap() ? requestFileSystem : window.WebKitRequestFileSystem);
使用しているのPhoneGap APIは、本当に何もHTML5の同等を持っていない場合は、そうでないあなただけのブラウザで機能を失うことになる、可能な場合はJavaScriptで機能を自分で複製してみてください。しかし、それがその機能なしで十分に優雅に劣化することを確認してください。
注:加速度計、ジオロケーションなどのモバイルデバイスの機能をテストするには、ブラウザのチェックアウトにRipple Chrome extensionを入力します。
非常に役に立ちました、ちょうどコメント:5行目に間違いがあります " iPhonegap "は" isPhonegap "でなければなりません。ありがとう! –
固定、ありがとう:) – chrisben
私はdevicereadyイベントに建て使用して、現在の問題は、ページがロードされたとき、あなたはアプリを伝える方法がないということです...
をそのままウェブのコードベースを維持する方法を考え出しました: 「これはモバイルデバイス上で実行されていないため、デバイスの起動準備が整うのを待つ必要はありません。コードのネイティブ部分には
、iOS用の例えば、MainViewController.mでその変数が周りにある場合のviewDidLoadが、私は、私は後でウェブコードでチェックjavascriptの変数を送信しています方法がありますすべてが(例えば、ナビゲーターのジオロケーション)準備ができるまで、私はMainViewController.mの下で私のページのコードを開始する
をお待ちしております。
- (void) viewDidLoad { [super viewDidLoad]; NSString* jsString = [NSString stringWithFormat:@"isAppNative = true;"]; [self.webView stringByEvaluatingJavaScriptFromString:jsString]; }
インデックスを。HTMLコードはこのように書き:
function onBodyLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady(){; myApp.run(); } try{ if(isAppNative!=undefined); }catch(err){ $(document).ready(function(){ myApp.run(); }); }
- 1. Phonegap CordovaとPhonegap Desktopで同じプログラミングをしています
- 2. Doxygenを使用して同じコードベースから "user"と "developer"ドキュメントを生成
- 3. CPUとGPUの同じコードベース
- 4. WPFとSilverlightの同じコードベース?
- 5. 同じコードベースのモバイルアプリクローン
- 6. Web(Angular 4)とMobile(Ionic 3)の同じコードベースの共有
- 7. iOSとWebアプリケーションに同じブランチサブドメインを使用できますか?
- 8. 同じコードベースの新しいファイル名を生成します。
- 9. 同じコードベースで複数のWebアプリケーションを管理する
- 10. 複数のRails 2.3 Webサイトで同じコードベースを使用して差分を管理する方法
- 11. 同じApache Webサーバー内の複数のドメインに同じソフトウェアを使用していますか?
- 12. フルバージョンと同じコードベースのAndroid体験版
- 13. Map3とEngineを同じプロジェクトで使用していますか?
- 14. PhoneGapのとXcode:同じボタン
- 15. IIS上のWebサイトとWebサービスに同じキャッシュを使用
- 16. capistranoとgitを使用して、同じコードベースを複数のサーバに配備する
- 17. D3.JSを使用して同じWebサイトでAPIエンドポイントにアクセス
- 18. どこで同じコードベースを使用するマルチウェブサイトCMSを見つけることができますか
- 19. ASP.NET MVCとWCF Web APIは同じルーティングモジュールを使用しますか?
- 20. ターゲットを使用して同じコードベースを使用して複数のアプリを起動するにはどうすればよいですか?
- 21. Jmeter:同じスレッドグループでWebサービス要求の「N」を使用しています。
- 22. 複数のAPKが同じコードベースを使用しているため、ユーザーに不便を招く
- 23. 同じActionScript 3コードベースのFlexプロジェクトで複数のカスタムビルド設定を使用することはできますか?
- 24. 私はpostmanとは異なる結果を得ています。同じエンドポイントとリクエストを使用して、同じエンドポイントとリクエストを使用しています。
- 25. ウェブサイトプロジェクトと同じIISと同じポート(80)のWebサービスプロジェクトを処理していますか?
- 26. PhoneGapを使用してWebサイトにアクセスする
- 27. redirecttoactionは同じサーバーを使用していますか?
- 28. 同じブラウザインスタンスを使用していますか?
- 29. どこでも同じコンテキストを使用していますか?
- 30. mavenを使用してWebアプリケーションjarsを順番にロード - websphereclassloaderMode = "PARENT_LAST"と同じ
あなたは遅かれ早かれメンテナンス地獄に実行するためにバインドされます、私が提案し、...しません:// stackoverflowの:S –
は、ルックはhttpを持っています。 com/questions/10347539/mobile-browser-or-a-phonegap-application/10348353#10348353 – Futur