我们知道我们的一些代码必须是本机代码,但它可以封装为Android服务。我们希望将面向UI的部分创建为渐进式Web应用程序(PWA)。
PWA是否有办法与设备上的本机应用程序进行交互(例如,使用参数调用它们并处理其他应用程序的回复/广播)?
PWA可以调用意图,被称为意图等吗?有什么可能性?
答案 0 :(得分:9)
在Chrome Dev Summit 2016,团队宣布了Web Share API,它允许PWA调用设备的本机共享功能(例如,参见Android demo video)以响应用户手势(例如,通过点击链接;不能自动)。 API是一个非常新的,并且在原始试验之后。
以下示例click-handler调用Share Intent,它会调出本机应用程序选择器以与用户选择的应用程序共享数据。传递URL(可选)允许该应用提供到用户的链接,例如详细视图。
function onClick() {
navigator.share({
title: document.title,
text: "Hello World",
url: window.location.href
}).then(() => console.log('Successful share'))
.catch(error => console.log('Error sharing:', error));
}
可以通过intent URLs从PWA发送Android意图。该方法还需要用户手势来启动(例如,通过点击链接;不能是自动的)。
意图语法是:
intent:
HOST/URI-path // Optional host
#Intent;
package=[string];
action=[string];
category=[string];
component=[string];
scheme=[string];
end;
例如,单击此锚标签将启动ZX条形码扫描仪应用程序:
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>
我在PWA上发现没有从本机应用程序接收意图或广播消息。我不认为这是可能的。