【发布时间】:2017-04-13 00:45:03
【问题描述】:
我们知道我们的一些代码必须是原生代码,但是可以封装成Android服务。我们希望将面向 UI 的部分创建为渐进式 Web 应用 (PWA)。
PWA 是否有办法与设备上的原生应用交互(例如,使用参数调用它们并处理其他应用的回复/广播)?
PWA 可以调用意图,被称为意图等吗?有哪些可能性?
【问题讨论】:
我们知道我们的一些代码必须是原生代码,但是可以封装成Android服务。我们希望将面向 UI 的部分创建为渐进式 Web 应用 (PWA)。
PWA 是否有办法与设备上的原生应用交互(例如,使用参数调用它们并处理其他应用的回复/广播)?
PWA 可以调用意图,被称为意图等吗?有哪些可能性?
【问题讨论】:
在Chrome Dev Summit 2016,团队宣布了Web Share API,它允许 PWA 调用设备的本机共享功能(例如,请参阅Android demo video)以响应用户手势(例如,通过单击链接; 不能是自动的)。该 API 非常新,并且处于原始试验阶段。
以下示例点击处理程序调用 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。此方法还需要用户手势来启动(例如,通过单击链接;不能是自动的)。
意图语法是:
intent:
HOST/URI-path // Optional host
#Intent;
package=[string];
action=[string];
category=[string];
component=[string];
scheme=[string];
end;
例如,单击此锚标记会启动 ZX Barcode Scanner 应用程序:
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>
我没有发现 PWA 从本机应用程序接收意图或广播消息。我觉得不可能。
【讨论】: