Web Share Target API

私は、Webプラットフォーム上で、Webサイトやアプリケーションからデータを取得したり取得したりすることをより困難にすることによって意図しないサイロを作成していることを常に心配しています。ユーザーは自分のデバイス上にあることが期待されるすべての場所にアプリを置くことができるため、アプリをウェブからアプリに切り替えることができます。

私はChromeがnavigator.shareの作業を補完する[Web共有ターゲットAPI上で]動作するようになったこと(0)に非常に満足しています。 navigator.shareはあなたのウェブサイトからの情報を、あなたのウェブサイト(またはAndroidの言葉では Intent.ACTION_SEND)を受け取ることができるユーザーのデバイス上のどのアプリケーションとも共有できる場所で、Web Share TargetはWebサイト)私はそのゲームでもプレーしたいと言っています。

私はこの作品がAndroidのChrome Canaryで利用できるようになったと非常にうれしく思います。

Web Share Target APIは、Web App Manifestで定義する小さなAPIです。 registerProtocolHandlerを使用したことがあるなら、それが100万マイル離れた場所ではないことがわかります。ユーザーがアクションを呼び出すときに置換される多数の変数を持つURLテンプレートを定義します。

最初に、ユーザがサービスを選択したときに開くべきパスを持つ url_templateという1つのプロパティを含む share_targetという名前の 'オブジェクト'プロパティを作成します。 Androidでは、* {title}という3つの置換名を使うことができます。これはnavigator.share APIで .title、Android Intentから Intent.EXTRA_SUBJECTです。 * {text} - navigator.share APIの .textやAndroid Intentの Intent.EXTRA_TEXTに相当します。 * {url} - navigator.share APIの .urlやAndroid Intentの生データに相当します。

あなたはTwitterのPWAをインストールすることで、これを今日試すことができます。 Twitterのマニフェストは以下です

{
    ...
    "name": "Twitter Lite",
    "share_target": {
        "url_template": "compose/tweet?title={title}&text={text}&url={url}"
    },
    ...
}

今、いくつかの制限があります:

*マニフェストごとに1つしか設定できません。これは、Twitterのケースでは、「DMと共有する」ことができないことを意味します。 * UIサーフェイスを開かなくても起動される navigator.actionsというサービスワーカーイベントなど、いくつかの拡張が提案されていますが、まだ実装されていません。 *あなたは「テキスト」を共有することができます。つまり、データのBlobを共有したい場合は、共有するURLを保存する必要があります。 * Android上でのみ動作します。 * PWAをインストールしておく必要があるため、共有ターゲットを登録してドライブを実行することはできません。 Chromeが 'Web APK'を生成すると、 share_targetを参照して、ネイティブ` 'を登録する必要があるかどうかを確認します。 *マニフェスト仕様の一部としてまだ標準化されていません。 :/ああ - それも変わるかもしれない(0)。

これ以外にも制限はありませんが、これはWebプラットフォームにとって非常に驚くべきものです。これは、Webがホストプラットフォーム上での統合に関して持っている巨大な障壁を打破することの始まりです。

このAPIの更新をトラッキングする場合は、Chromeステータスをご覧ください。

About Me: Paul Kinlan

I lead the Chrome Developer Relations team at Google.

We want people to have the best experience possible on the web without having to install a native app or produce content in a walled garden.

Our team tries to make it easier for developers to build on the web by supporting every Chrome release, creating great content to support developers on web.dev, contributing to MDN, helping to improve browser compatibility, and some of the best developer tools like Lighthouse, Workbox, Squoosh to name just a few.