美文网首页
Google App Link 技术实现(亲证篇)

Google App Link 技术实现(亲证篇)

作者: 高_歌 | 来源:发表于2017-12-25 17:24 被阅读0次

App Link简介

App Link是google 在 Android 6.0系统以上实现的一种技术(深度链接技术),具体是用户可以通过点击web链接,达到打开指定app(已安装)或网页(未安装app的情况),可以大幅提升用户体验,同时降低服务器h5页面需对手机是否已安装app进行逻辑判断的操作。

App Link工作原理:

app在安装的时候,验证一个服务器地址(例如http://m.fengjr.com),成功验证通过后,当用户点击于类似http://m.fengjr.com/about的web链接,即可打开app本地相关页面(如app未安装,打开相关网页).

AppLink实现步骤:

1.app代码相关配置

app AndroidManifest.xml中增加相关配置:

<activity android:name=".act.impl.SchemeDispatcher" android:configchanges="orientation|keyboardHidden" android:launchmode="singleTask" android:screenorientation="portrait" android:theme="@style/AppTheme.NoTitleBar">
           <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="m.fengjr.com">
               <data android:scheme="https" android:host="m.fengjr.com">
               <!--
               <data
                   android:host="m.fengjr.com"
                   android:pathPrefix="/appFengjr"
                   android:scheme="http"/>
                   -->
           </data></data></category></category></action></intent-filter>
</activity>

其中关键的两处,"android:autoVerity="true"指定该组件需要在程序安装时,进行深度链接验证;"android:host="m.fengjr.com"指定要验证的服务器地址。

2.assetlinks.json文件制作

在服务器http://m.fengjr.com/根目录下新建.well-known目录,并上传一个assetlinks.json(有的文章此处指定文件名为statments.json,经验证,为错误命名,正确名称应为assetlinks.json),文件内容格式类似:

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.fengjr.mobile",//替换成自己应用的包名
   "sha256_cert_fingerprints": ["**:**::**::**::**::**::**::**::BB:69:56:A6:DB:FE:1C:38:16:D3:3D:01:BD:AC:8F:8C:86:26:CD:**::**::**::**::**:"]//根据app的keystore文件生成的sha256签名
 }
}]

附assetlinks.json文件生成方法:
终端执行如下命令,并输入密钥库口令

keytool -list -v -keystore /path/to/app/release-key.keystore
输入密钥库口令: 

拷贝SHA256算法得到的证书签名内容,替换上述assetlinks.json中相关内容.然后将准备好的assetlinks.json文件上传到服务器http://m.fengjr.com/.well-known目录下

3.查看App Link验证是否生效

adb shell dumpsys package d

得到如下输出:

 Package: com.alibaba.android.arouter.demo
  Domains: m.aliyun.com
  Status:  ask

  Package: com.ss.android.article.news
  Domains: m.toutiao.com toutiao.com www.toutiao.com open.toutiao.com d.toutiao.com
  Status:  ask

  Package: com.fengjr.mobile
  Domains: m.fengjr.com
  Status:  always : 200000004

其中status状态解释:

  • undefined — app没有在manifest中启用链接自动验证功能。
  • ask — app验证失败(会通过打开方式对话框询问用户)
  • always — app通过了验证(点击这个域名总是打开这个app)
  • never — app通过了验证,但是系统设置关闭了此功能。

也可通过访问google api,查看app是否通过App Links验证(需翻墙)

https://digitalassetlinks.googleapis.com/v1/statements:list?
   source.web.site=https://m.fengjr.com(将该网址替换为自己的验证服务器域名)
   relation=delegate_permission/common.handle_all_urls

如验证通过,会得到如下结果:


delmt.png

4.验证App Link

新建一个测试网页,文字链接配置为(http://m.fengjr.com/about/),然后点击文字,即可打开本地app,

效果图:


1514193223.gif

相关文章

网友评论

      本文标题:Google App Link 技术实现(亲证篇)

      本文链接:https://www.haomeiwen.com/subject/jsxlgxtx.html