如果要在Android中实现DeepLink, 我推荐使用Airbnb的开源库。(Airbnb真是开源界的大佬)
DeepLinkDispatch
如何在你的应用中声明DeepLink?
<activity
android:name="app.myActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<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:host="gizmos"
android:scheme="example" />
</intent-filter>
<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:host="www.example.com"
android:pathPrefix="/gizmos"
android:scheme="http" />
<!-- note that the leading "/" is required for pathPrefix-->
</intent-filter>
</activity>
注意,这样声明将同时支持两种Deep Link的调用(一般都是需要2种都支持的)
adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos"
adb shell am start -W -a android.intent.action.VIEW -d "http://www.example.com/gizmos"
如何测试DeepLink呢?有两种方式:
1 使用adb命令: am start -W -a android.intent.action.VIEW -d "your_deep_link" your_package_name
2 安装App:Test Deep Links & Deep linking
另外在Chrome中调用Deep Link似乎有一些不一样:
Android Intents with Chrome
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>
还有支持如果找不到应用就跳转到相关网页的回调的方式
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end"> Take a QR code </a>
网友评论