2016-10-08 83 views
10

嗨我正在嘗試使用React-Native的鏈接庫來收聽鏈接更改,並按照https://facebook.github.io/react-native/docs/linking.html上的說明操作。我可以使用openURL打開外部URL,但Linking.addEventListener似乎不適用於我。 我複製的代碼片段:React-Native Linking AddEventListener無法正常工作

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

它不給我一個錯誤,但是當應用程序打開了一個外部URL的_handleOpenURL不叫。

我不知道爲什麼這個案子,我應該怎麼做才能解決它?

+0

你有沒有搞清楚這個問題,我遇到了同樣的事情。 –

+0

我面臨同樣的問題。有沒有人有任何解決方案? – Zip

+0

@FreddieCabrera嗨!是的,事實證明,鏈接只能在應用程序內的自定義webview內工作,所以如果您在Web瀏覽器中打開鏈接,鏈接庫將無法收聽應用程序外發生的事件。鏈接偵聽器只適用於應用程序內的webview。 –

回答

0

這是因爲當應用程序通過意圖開始時,鏈接具有特定的方法。

試試這個:

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