我们知道我们的一些代码必须是原生代码,但是可以封装成Android服务。我们想将面向 UI 的部分创建为渐进式 Web 应用程序 (PWA)。
PWA 有没有办法与设备上的 native 应用程序交互(例如,使用参数调用它们并处理其他应用程序的回复/广播)?
PWA 调用意图可以被称为意图等吗?有哪些可能性?
最佳答案
发送共享意图(通过 Web Share API)
在 Chrome Dev Summit 2016 ,团队宣布Web Share API ,它允许 PWA 调用设备的 native 共享功能(例如,参见 Android demo video)以响应用户手势(例如,通过单击链接;不能自动)。 API 是非常新的,并且是在原始试验之后。
以下示例单击处理程序调用 Share Intent,它会调出 native 应用程序选择器以与用户选择的应用程序共享数据。传递 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));
}
从 Chrome 发送 Android Intent
可以使用 intent URLs 从 PWA 发送 Android 意图.此方法还需要用户手势来启动(例如,通过单击链接;不能是自动的)。
意图语法是:
intent:
HOST/URI-path // Optional host
#Intent;
package=[string];
action=[string];
category=[string];
component=[string];
scheme=[string];
end;
例如,单击此 anchor 标签会启动 ZX Barcode Scanner 应用程序:
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>
接收 Android Intent
我没有发现 PWA 从 native 应用程序接收意图或广播消息。我不认为这是可能的。
关于progressive-web-apps - PWA 与 Android 应用程序/服务的互操作性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40858803/