2016-10-08 8 views
10

Hallo Ich habe versucht, React-Native Linking-Bibliothek verwenden, um Linking Änderungen zu hören, und ich folgte den Anweisungen auf https://facebook.github.io/react-native/docs/linking.html. Ich kann externe URL mit openURL öffnen, aber Linking.addEventListener scheint nicht für mich zu arbeiten. Ich kopierte den Code-Schnipsel:React-Native Linking AddEventListener funktioniert nicht

componentDidMount() { 
 
    Linking.addEventListener('url', this._handleOpenURL); 
 
}, 
 
componentWillUnmount() { 
 
    Linking.removeEventListener('url', this._handleOpenURL); 
 
}, 
 
_handleOpenURL(event) { 
 
    console.log(event.url); 
 
}

es nicht geben Sie mir einen Fehler, aber der _handleOpenURL wird nicht aufgerufen, wenn die App eine externe URL öffnet.

Ich frage mich, warum ist dieser Fall und was soll ich tun, um es zu beheben?

+0

Haben Sie herauszufinden, das Problem, ich in die gleiche Sache am Laufen. –

+0

Ich stehe vor dem gleichen Problem. Hat jemand dafür eine Lösung? – Zip

+0

@FreddieCabrera Hallo! Ja, es stellt sich heraus, dass die Verknüpfung nur innerhalb der benutzerdefinierten Webansicht innerhalb der App funktioniert. Wenn Sie also den Link in einem Webbrowser öffnen, kann die verknüpfende Bibliothek die Ereignisse außerhalb der App nicht abhören. Das Verknüpfen von Listener funktioniert nur in der Webansicht innerhalb der App. –

Antwort

0

Dies ist, weil Verknüpfung eine bestimmte Methode haben, wenn die App durch eine Absicht gestartet wird.

Versuchen mit diesem:

componentDidMount() { 
    Linking.getInitialURL().then((ev) => { 
    if (ev) { 
     this._handleOpenURL(ev); 
    } 
    }).catch(err => { 
     console.warn('An error occurred', err); 
    }); 
    Linking.addEventListener('url', this._handleOpenURL); 
} 
Verwandte Themen