2017-06-16 9 views
1

company:// uploadで利用可能なアプリケーションがあります。私はitentフィルタを作成しました:React他のアプリからのネイティブディープリンク

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:scheme="company" 
    android:host="upload" /> 
</intent-filter> 

これはアプリケーションを開いていますが、反応ネイティブの内部ではURLを捕捉できませんでした。私の実装:

componentWillMount() { 
    Linking 
    .getInitialURL() 
    .then(event => this.handleOpenURL(event)) 
    .catch(console.error); 
    Linking.addEventListener('url', this.handleOpenURL); 
    this.props.loadCredentials(); 
} 

handleOpenURL(event) { 
    console.log(event); 
    switch (event.url) { 
    case `${Config.APP_SCHEMA}upload`: 
     Actions.Upload(); 
     break; 
    default: 
     Actions.Home(); 
    } 
} 
  • 実装はrouter.jsであり、これは最初のリアクトコンポーネントです。
  • インテントフィルターは.MainActivityにあります
  • 他のアプリケーションでアプリケーションをクリックすると、そのアプリケーションが開くのでリンクのJava部分が機能しています。

バージョン:

  • "react-native": "0.42.0",
  • Android SDK 23
+0

最初の反応成分の中で、どこにjavascript部品を追加しましたか?その場合は、ルータに移動します。 – Raymond

+0

私は 'react-native-flux-router'を使用しています。それは上のレベルです。しかし、 'Linking'パッケージは、それ以外のところでそれを捕まえるべきでしょう、そうではありませんか? – PumpkinSeed

+0

私はそうは思わない。それは間違いなくあなたがルータの中にそれを追加する場合は動作します。 – Raymond

答えて

0

私はディープリンクをテストするためのスクリプトを書いた:

adb shell am start -W -a android.intent.action.VIEW -d "company://$1" com.companyapps/.MainActivity

深いリンクが正しいです、問題はアプリケーションのJava部分にありました。

関連する問題