У меня проблема с navigator.share, я пробовал на android (galaxy note 8, немного huawei и pixel от моих друзей) очень разными способами, но результат всегда один и тот же: у меня есть кнопка, привязанная к navigator.share, щелкнув по нему, активируйте общий ресурс android, когда я завершу общий доступ и использую кнопку активности, чтобы перейти от моего приложения общего доступа (например, Telegram) к Chrome, Обещание не будет выполнено.
Если я нажму назад из приложения, которое использовалось для обмена контентом, Обещание будет правильно разрешено. Есть ли способ вызвать решение Promise, даже если поток обмена не является: share -> app -> button back?
Компонент реагирования был построен следующим образом:
import React, { Component } from 'react';
class CustomShareComponent extends Component {
shareExternal = () => {
if (navigator.share) {
const shareUrl = this.buildShareUrl();
navigator.share({
title: 'Test',
text: 'This is text',
url: shareUrl,
})
.then(() => this.probablyShared())
.catch(err => { console.error(err); /* processing */ });
}
};
buildShareUrl = () => {
let shareUrl = 'https://google.com';
// URL Building, indifferent
return shareUrl;
};
probablyShared = () => {
alert("Shared");
};
renderShareButton = () => {
let button;
if (navigator.share) {
button = (
<button onClick={this.shareExternal}>
Share
</button>
)
} else {
// Different rendering way
}
return button;
};
render() {
return (
<div className="sharer d-flex align-items-center justify-content-center mx-auto">
{ this.renderShareButton() }
</div>
);
}
}
export default CustomShareComponent;