navigator.share () никогда не выполняется, затем никогда не срабатывает - PullRequest
0 голосов
/ 01 мая 2020

У меня проблема с 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;
...