2017-06-16 72 views
1

有我们的应用程序应该在公司://上传。我创建了itent-filter: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> 

它正在打开应用程序,但在react-native内部我无法捕捉到网址。我的实现:

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部分。

相关问题