最近接到一个需要从任意一个邮箱直接进入APP登录页的需求,其中会用到DeepLink技术,简单做一个笔记,DeepLink(深度链接)就是支持在移动App自由跳转的技术。从拦截外部请求到app内并定位到具体页面的技术.也就是你在手机上点击一个链接之后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页。不似web,一个链接就可以直接打开web的内页,app的内页打开,必须用到deeplink技术。
作用:1 deeplink能够将外部流量引导到app内, 并提供连贯的浏览体验, 实在是引流的大杀器,2 deeplink还做高效的流量分发. 通过外部url的投放和内部拦截, 可以针对不同场景直接分发流量到具体页面, 将用户直接引导到各个垂直频道.
其中涉及到URL Scheme, 类似一种路由,它是iOS,Android平台都支持,只需要原生APP开发时注册scheme, 那么用户点击到此类链接时,会自动唤醒APP,借助于URL Router机制,则还可以跳转至指定页面。
简单写一个Demo:
启动链接:
<a href="http://www.wwe.com/login>启动应用程序</a>
模拟邮箱点击:
private void open() {
String url = "http://www.wwe.com/login";
Uri uri = Uri.parse(url);
Intent intent = new Intent();
intent.setData(uri);
startActivity(intent);
}
APK页面
<activity android:name="com.deeplinkdemo.DeepLinkActivity">
<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.wwe.com"
android:scheme="http"
android:pathPrefix="/login"
/>
</intent-filter>
</activity>
scheme:判别启动的App。
host:主页地址
path:传值时必须的key 非必需
query:获取值的Key和Value 非必需
public class DeepLinkActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_deep_link);
Intent intent = getIntent();
if (intent != null && intent.getData() != null) {
Uri uri = Uri.parse(intent.getData().toString());
Toast.makeText(DeepLinkActivity.this, uri.toString(), Toast.LENGTH_LONG).show();
}
}
}