我想实现其他应用可以识别并打开我的应用的深层链接

时间:2019-05-23 09:36:39

标签: react-native react-native-android

我已经将我的应用程序与方案example:// test /:id进行了深层链接。我想将其转换为www.someurl.com/test/:id,但是不知道如何执行此操作。 我想将其设为可以共享的链接,并打开诸如https://shrts.in/JRnN之类的应用。

我的网址处理程序看起来像这样,我正在使用react-native-deep-linking

   componentDidMount() {

     DeepLinking.addScheme('example://');
     Linking.addEventListener('url', this.handleUrl);
     DeepLinking.addRoute('/test/:id', (response) => {
       // example://test/23
       this.props.navigation.navigate('Article',{id:response});
     });

     Linking.getInitialURL().then((url) => {
       if (url) {
         Linking.openURL(url);
       }
     }).catch(err => console.error('An error occurred', err));
   }

   componentWillUnmount() {
     Linking.removeEventListener('url', this.handleUrl);
   }

   handleUrl = ({ url }) => {
     Linking.canOpenURL(url).then((supported) => {
       if (supported) {
         DeepLinking.evaluateUrl(url);
       }
     });
   }

还有改进的空间,我还是比较陌生的。网上的所有参考文献都已经过时了。我可以使用adb这样的程序来打开此应用

adb shell am start -W -a android.intent.action.VIEW -d "example://test/346" com.app

但是我想从一个URL上打开它,我可以在浏览器中输入类似www.someurl.com/test/:id的内容,前提是我托管了我的网站

编辑

这是我的清单意图

<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:pathPattern="/.*"></data>
           <data android:scheme="example" android:host="test" />

        </intent-filter>

1 个答案:

答案 0 :(得分:0)

https://developer.android.com/training/app-links/deep-linking#adding-filters这是android上的Deeplink的官方文档。 抱歉,我不是第一次测试!

Error in downloadBitmap - java.net.MalformedURLException: Unknown protocol: content

尝试添加另一个Intent过滤器。然后使用 <intent-filter > <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos” --> <data android:scheme="example" android:host="test" /> </intent-filter> 打开应用程序。现在看来您无法通过直接在浏览器中输入来打开应用程序。但是尝试编写html文件并在其中添加链接一个标签,您会发现该应用已打开!