因此,我们正在 Ionic v3 PWA 中实施navigator.share()
(https://developers.google.com/web/updates/2016/09/navigator-share)。
它可以工作,但是我们遇到了一个我们不知道如何解决的小问题:当导航共享选择器弹出时(用户可以在收件箱、gmail、twitter 等之间进行选择),然后用户按下 android 上的后退按钮(关闭出现的本机模式),该函数不会触发承诺中的任何响应。不是成功,不是错误。
这里的问题是,我们在调用 navigator.share 函数之前显示了一个加载微调器,如果用户在那个精确时刻按下了返回按钮,我们就无法触发隐藏加载微调器的函数。
这是我们实现该功能的代码部分:
public share(title: string, message: string, url: string) {
// if it's mobile & web (ie: chrome on android)
if (this.isMobileWeb === true) {
this.showLoading();
if ((navigator as any).share) {
(navigator as any).share({
title,
message,
url,
})
.then(() => {
console.log('Success share');
this.hideLoading();
})
.catch((error) => {
console.log('Error share', error);
this.hideLoading();
});
}
else {
console.log('navigator.share() not supported.');
this.hideLoading();
}
}
}
使用此实现,如果用户在本机共享模式出现时按下后退按钮,则不会引发成功或错误。这段代码有问题吗?
我还尝试在函数中添加另一个回调函数.then()
,如:.then(successFn, errorFn)
. theerrorFn
也永远不会被调用。
谢谢你的时间。-