[解決済み] AndroidにおけるProgressive Web Appsとネイティブアプリの違いについて [終了しました]
質問
2015年、GoogleはAndroid向けのWebアプリを開発するための新しいアプローチを導入しました。 プログレッシブ ウェブ アプリ . ネイティブ アプリケーションのように見えるアプリケーションを作成でき、カメラや加速度計などのデバイスのハードウェアを使用でき、プッシュ通知を受信し、ランチャー アイコンを持ち、オフラインで動作し、ローカル データを保存するなど、さまざまな機能を備えています。
Android では、プログレッシブ ウェブ アプリがサポートしていないネイティブ アプリはどのような機能を提供していますか、またその逆も同様です。
どのように解決するのですか?
TL;DR - 2017年2月現在、Progressive Web Appsは十分に強力なプラットフォームであるため Twitter はモバイル ウェブ トラフィックをすべて React PWA に移行しました。 .
2016年8月現在、Progressive Web Appsは実際に一般的に考えられているよりも多くのハードウェアアクセスを提供しています。以下はそのスクリーンショットです。 whatwebcando.today をAndroid上の私のChrome 52 stableから撮影したものです。
ハードウェアのアクセスには
- ジオロケーション - 大半のブラウザでサポートされています。
- カメラとマイクを getUserMedia/Stream と、近日公開予定の メディアストリームの画像キャプチャ API
- デバイス 振動
- スクリーン 方位と加速度計 を含む、アクセス コンパスとジャイロスコープ
- バッテリ状態
今後のハードウェアアクセス
これらの機能は、いくつかのブラウザで実装されているか、すでに動作しています。
- Bluetooth 経由で ウェブ Bluetooth API
- NFC
- 環境光センサー ( 作品 はFirefox 48+で動作)
- 近接センサー ( ワークス はFirefox 48+で動作)
- 加速度計 , 磁力計 および ジャイロスコープ センサーアクセス
- 形状検出API
もう一つの重要なポイントは オリジントライアル フレームワーク ( は Chrome に実装されています。 によって、メーカーは標準化プロセスを経ることなくハードウェア(またはソフトウェア)機能を公開し、テストすることができます。たとえば、携帯電話メーカーは圧力センサーの値を読み取るための API を公開し、それを改良してから W3C に提出し、検討することができます。
ハードウェアのアクセス以外にも、伝統的にネイティブ アプリで採用されていたソフトウェア機能がウェブ アプリでも利用できるようになったものがあります。
PWA も使用できる従来のネイティブ機能
- プッシュ通知
- オフラインでの作業
- ホーム画面にアイコンを追加する
- がアプリ一覧に表示されるようになったのは WebAPKs - Progressive Web Apps は、実際にインストール可能な Android パッケージにパッケージ化されるようになりました!
- で起動します。 フルスクリーン
- クリップボードアクセス
-
HTML5 によるハードウェア アクセラレーションを用いた 2D/3D グラフィック キャンバス または WebGL - のいくつかをチェックします。 HTML5 Canvas のデモを見る , WebGL サイト または three.js ライブラリ . の2014年のベンチマークでは クロスプラットフォームゲームエンジンUnity は、ネイティブと WebGL のレンダリング パフォーマンスを比較し 結論 としました。
最も重要なことは、WebGL がネイティブ コードより大幅に遅い領域がまだある一方で、全体としてはすでに非常にまともなパフォーマンスを期待でき、これは将来的にさらに良くなる可能性があるということです。
- 読み 任意のブラウザでユーザが選択したファイル
- 滑らかでスムーズなUI と 60fps アニメーション
これらの機能は多くのユースケースをカバーしており、現在人気のあるネイティブアプリの多くは PWA として書き換えることができます。たとえば、Slack です。そのオープンソースの代替品である Rocket.Chat は PWA 版を構築しています。 . その他の PWA のデモについては https://pwa.rocks .
PWAに登場するネイティブ並みの機能
- ハンドリングインテント - 例えば ページを他のアプリと共有する であったり、あるいは 共有先 例えば、ユーザーのアバターとして設定する画像を受け取るPWAチャットアプリなど
Android のネイティブ機能 PWAではまだ利用できない機能
- 指紋センサーへのアクセス ( 開発中 )
- 連絡先、カレンダー、およびブラウザーのブックマークへのアクセス (これらにアクセスできないのは 機能 とみなされる可能性があります)。
- アラーム
- 電話機能 - SMS や通話の傍受、SMS/MMS の送信、ユーザーの電話番号の取得、ボイスメールの読み上げ、ダイアラー ダイアログを使用しない電話の発信
- いくつかのハードウェア機能およびセンサーへの低レベルのアクセス: 懐中電灯、大気圧センサー
- システム アクセス: タスク管理、システム設定の変更、ログ記録
Progressive Web Apps は、ネイティブ アプリにない機能を提供します。
- 発見性 - プログレッシブ ウェブ アプリのコンテンツは検索エンジンで簡単に見つけることができますが、StackOverflow のようなコンテンツ中心のネイティブ アプリは、"pwa vs. native" など、アクセスを提供しているコンテンツのアプリ ストア検索結果の中に表示されません。これは、Reddit のようなコミュニティにとって問題であり、多数のサブコミュニティを個別のアプリとしてアプリ ストアに公開することができないのです。
- リンク可能性 - どのページ/画面にも直リンクを張ることができ、簡単に共有することができます。
- ブックマーク機能 - アプリのビューに直接アクセスするために、そのリンクを保存します。
- 常に新鮮 - アップデートのためにアプリストアを経由する必要がありません。
- ユニバーサルアクセス - アプリストアの対象外 任意のポリシーが適用されることがある または(意図しない) 地理的な制約
- 大容量データ保存 は、高価な、あるいは低速のインターネットアクセスを持つ新興市場において非常に重要です。たとえば、E コマース サイトの Konga はPWAに移行することで、最初のロードでデータ使用量を92%削減しました。 .
-
流通の摩擦が少ない
- プログレッシブWebアプリがオンラインであれば、Android(およびその他のモバイル)ユーザはすでにアクセス可能です。
- 米国のスマートフォン ユーザーの 65.5% は、毎月新しいアプリをダウンロードしていません。
- PWA は、アプリ ストアに行き、アプリを検索し、インストールをクリックし、ダウンロードを待ち、アプリを開くという手間を省きます。 これらの各ステップは、潜在的なユーザーの20%を失うことになります。
最後の注意事項: PWA は、同じコードベースで、デスクトップとほとんどのモバイル デバイスで動作します。デスクトップ環境 (ChromeOS、および 以降 Mac および Windows)では、他のアプリと同じ方法で起動し、通常のアプリ ウィンドウで実行されます(ブラウザのタブはありません)。
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] 開発者コンソールでのベータ版/アルファ版テストについての説明が必要です。
-
[解決済み] 確認(yes/no)用のDialogPreferenceを実装するには?
-
[解決済み] プログラムによるセレクタ画像の置き換え
-
[解決済み] android:fontFamily="sans-serif-light "と同等の機能をJavaコードで実現するには?
-
[解決済み] AndroidにおけるProgressive Web Appsとネイティブアプリの違いについて [終了しました]
-
[解決済み] PreferenceFragmentCompatはpreferenceThemeが設定されている必要があります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] Androidでビットマップから円形領域を切り取る方法
-
[解決済み] エラーです。ステータス{statusCode=DEVELOPER_ERROR, resolution=null}.
-
[解決済み] アンドロイドでビットマップのサイズを変更する最もメモリ効率の良い方法とは?
-
[解決済み] カスタムレイアウトとEditTextを持つAlertDialog.Builderは、ビューにアクセスすることができません。
-
[解決済み] Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer
-
[解決済み] Androidアプリケーションのインストール中に「Parse Error: Androidアプリケーションのインストール時に「パッケージの解析に問題があります。
-
[解決済み] Android: 複数の選択オプションを持つポップアップを作成する