web-dev-qa-db-ja.com

プログレッシブウェブアプリでシステムアプリケーションを使用してファイルを開く

デフォルトのシステムアプリケーションでプログレッシブウェブアプリからファイルを開くことができるかどうかを確認しようとしています。

アイデアは、PWAが一部のファイル(.docxファイルなど)をオフラインで使用するために保存し、ユーザーはそれらを(再)ダウンロードせずに開くことができるというものです。

理想的な状況は、PWAがファイルをメモリにロードし、そのファイルタイプのデフォルトのシステムアプリケーションにアクセスできるようにし(Wordの.docxファイルなど)、変更を監視する(つまり、ユーザーが編集内容を保存する)ことです。次に、それをPWAストレージに戻します。読み取り専用のソリューションでもすばらしいでしょう。

深刻なセキュリティ問題が示唆されており、Google検索から何も見つからなかったため、これは(まだ)サポートされていません。しかし、私には知らない方法があり、ユーザーがファイルのコピーをダウンロードする必要がないことを願っています。

9
don

この質問は最近多くの注目を集めているので、このテーマに興味のある人には非常に既存のニュースがあります: Writable Files API

現時点では、提案された新しいAPIは設計段階にあり、それらを導入する機会自体について活発な議論があります。したがって、まだ生産準備の整ったソリューションには程遠いようです。

更新2019-04-12

explainer (上記の投稿にもリンクされています)があり、提案されたAPIがどのように機能するか、または機能するかについての多くの有用な情報が含まれています。

8
don

いいえ、PWAは、アプリ自体にサンドボックス化されているファイルを除いて、通常のファイルシステムの変更をリッスンできません(これは、インストールされている各PWAの仮想ファイルシステムのようなものです)。

ここでのストレージ変更のイベントリスナーのみ を参照できます。これは、外部アプリがアクセスできないPWAからPWA固有のストアスペースに保存するもののみを対象としています。

<input type="file">は、通常のストレージファイルシステムにアクセスできる唯一の方法であり、リスナーもありません。

あなたが期待しているのは、多くの開発者がすぐに入手したいと考えているものですが、一般的なPWA仕様の形式ではありません。あなたが述べたように、それは主にセキュリティ制約によってブロックされます。 WebブラウザーでアクセスするすべてのPWA Webサイト(エンドユーザーには通常のWebのように見えます)を考えてみてください。あなたの完全なファイルシステムにアクセスできます。誰がその事実を受け入れ、気に入りましたか?誰も。 PWAは、ホーム画面に追加されると、個別の権限を持つように進化するはずです。その後、これらの機能が表示されることが期待できます。

更新:ファイルシステムとPWAの両方を使用する必要がある唯一の代替ソリューションは、PWAをCordovaにラップし、ネイティブファイルシステムAPIをPWA機能と一緒に使用することですオフライン機能を備えたService Worker。ターゲットユーザーのWebビューが最近の場合(v40以降)、Service Workerがサポートされます。このオプションでは、「ホーム画面に追加」オプションを介してアプリを配布することはできませんが、配布してもファイルシステムへのアクセスはサポートされません。

Electronを使用してWebアプリをラップすることもできます。これにより、ファイルシステムへのアクセスも可能になります。 Atom、VS CodeなどのIDEは、ElectronとHTML/CSS/JSを使用して構築されています。

1
Anand