meituan/WMRouter

通用链接app link搭配这个库怎么用呢

Closed this issue · 2 comments

项目想使用app link, 就需要在某个activity中这样配置:

<activity ...>

    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" android:host="www.example.com" />
        <data android:scheme="https" />
    </intent-filter>

</activity>

如果使用wmrouter,就产生两个问题:

  1. 这个配置在哪个activity下面。UriProxyActivity?如果是UriProxyActivity下面会有http schema和自定义的schema比如example://
  2. 我怎么区分http://www.example.com/redirect/searchPage?name=test(这个最终打开app 全局搜索activity)和http://www.example.com/web/asset/index.html#!/user/detail(打开app WebviewActivity然后打开这个html地址)呢?

不知道问题理解的对不对,按照我的理解回答一下:

问题1:按照WMRouter的设计思路,所有Activity的IntentFilter都统一配置到UriProxyActivity。安卓中的一个Activity可以配置多个IntentFilter,只要其中一个匹配上即可。

问题2:UriProxyActivity调用WMRouter前判断一下URI是不是AppLink(http协议,且path不是/web)。

  • 如果是AppLink,则替换成特殊格式,例如http://example.com/redirect/searchPage改成applink://example.com/searchPage,然后可以由WMRouter打开相应页面(AppLink的path可以用RouterUri注解配置到Activity上)。

  • 如果不是AppLink,就分发到WebViewHandler打开WebView。

谢谢回复。目前的方案也打算如此。只是不知道大家是否有更优的方案。也算放在这里讨论下。可能是国内google被墙了,导致app link用不起来,发现基本没有路由框架提及app link的