BlinkのMLで提案されている AppInstalled API とは

AppInstalled API

Blinkのメーリングリストで AppInstalled API (https://github.com/DHNishi/IsNativeAppInstalled/blob/master/explainer.md )という仕様が提案されています。


AppInstalled APIは、Webサイトが、そのサイト用のネイティブアプリケーションがインストールされているか確認するためのAPIです。


今までWebアプリケーションによる通知とネイティブアプリーションによる通知が重複して通知される問題を解決する有用な方法はありませんでした。このAPIによって、そのサイト用のネイティブアプリケーションがインストールされていることを確認できるようになります。


このAPIはmanifestを用いてWebアプリケーションからネイティブアプリへの関連付けを、逆にネイティブアプリからWebアプリケーションへも関連付けを行うことが出来る事が前提になっています。ネイティブアプリからWebアプリケーションへの関連付けはプラットフォームによって異なりますが、アンドロイドではDigital Asset Linksが使用されるようです。

サンプル

var isAppInstalledPromise = navigator.getInstalledRelatedApps();
isAppInstalledPromise.then(function(listOfInstalledApps) {
    // success
    for (var app of listOfInstalledApps) {
        // These fields are specified by the Web App Manifest spec.
        console.log(app.platform);
        console.log(app.url);
        console.log(app.id);
    }
}, function() {
    // failure
});

この例では、インストールされているWebアプリケーションに関連付けられたアプリケーションを問い合わせ、Promiseを受け取り、どのアプリケーションがインストールされているかを解決します。結果を受け取るために、Webアプリケーションは"related_applications"をWebアプリケーションのマニフェストに定義する必要があります。