Android DeepLink vs AppLink

一、概念

1. 介绍
  • DeepLink与AppLink,本质上都是基于Intent框架,使App能够识别并处理来自系统或其他App的某种特殊URL,在原生App之间相互跳转,实现良好的用户体验
  • DeepLink相对简单,有时不能直接唤起目标App,会出现多选项弹窗、确认弹窗等,需要用户进一步操作;AppLink相对复杂,需要App与Web协作完成系统验证,但可以保证直接唤起目标App,无需用户二次选择或确认
2. 区别
不同点 DeepLink AppLink
Intent scheme 任意 要求http或https
Intent action 任意 要求配置andorid.intent.action.VIEW
Intent category 任意 要求配置android.intent.category.BROWSABLE和android.intent.category.DEFAULT
链接认证 无需验证 要求进行Digital Asset Links文件验证
用户体验 可能展示一个多选项弹窗或确认弹窗,用户需要二次选择或确认 无弹窗,直接由App处理链接
兼容性 所有版本 Android6.0及以上版本

二、DeepLink实践

1. 被唤起方
1.1 首先,需要在AndroidManifest.xml文件进行配置
 

            
                

                
                

                
                
                
                
            

        

配置项作用:

  • ACTION_VIEW:支持被检索
  • CATEGORY_DEFAULT:响应隐式Intent
  • CATEGORY_BROWSABLE:可被Web浏览器唤起
  • data:一个或多个,必须含有scheme标签,决定被唤起的URL格式。

其中:

  • App可以配置多个支持唤起的Activity
  • Activity可以支持被多个URL唤起
  • 若一个App配置了多个支持唤起的Activity,它们的scheme和host一般一致,然后通过path、pathPrefix等进行定向区分
1.2 然后,被唤起后解析URL数据
@Override 
public void onCreate(Bundle savesInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  Intent intent=getIntent();
  String action=intent.getAction();
  Uri data=intent.getData();

  //解析data
  String scheme=data.getScheme();
  String host=data.getHost();
  String path=data.getPath();
  int port=data.getPort();
  Set paramKeySet=data.getQueryParameterNames();
...
}

  • URL基本格式
    scheme://host/path?param1=value1¶m2=value2
    eg: example://www.example.com/user?uid=123&name=Ming
2. 唤起方
2.1 获取到被唤起方的URL后,使用Intent跳转
Intent intent=new Intent();
intent.setData(Uri.parse("example://www.example.com/user?uid=123&name=Ming"));
startActivity(intent);
  • 需要回调数据时,使用startActivityForResult

三、AppLink实践

链接

四、配置示例

1. DeepLink

腾讯视频Android客户端,反编译获取AndroidManifest文件

  
            
                
                
                
                
                
                
            
            
                
                
                
                
            
            
                
                
                
                
            
            
                
                
                
                
            
            
                
                
                
                
            
            
                
                
            
    

2. AppLink

淘宝Android客户端,反编译获取AndroidManifest文件

    
            
                
                
                
                
                
                
                
            
            
     

五、参考

Android Developers

你可能感兴趣的:(Android DeepLink vs AppLink)