AppLink

作者: 杜白白白 | 来源:发表于2020-08-05 19:32 被阅读0次

    https://blog.csdn.net/u013651405/article/details/101480278

    简介

    通过 Link这个单词我们可以看出这个是一种链接,使用此链接可以直接跳转到 APP,常用于应用拉活,跨应用启动,推送通知启动等场景。

    流程

    在AS 上其实已经有详细的使用步骤解析了,这里给大家普及下

    快速点击 shift 两次,输入 APPLink 即可找到 AS 提供的集成教程。

    在 AS 中已经有详细的使用步骤了,总共分为 4 步

    ###add URL intent filters

    创建一个 URL

    或者也可以点击 “How it works” 按钮

    Add logic to handle the intent

    选择通过 applink 启动的入口 activity。

    点击完成后,AS 会自动在两个地方进行修改,一个是 AndroidManifest

    <activity android:name=".TestActivity">

                <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:scheme="http"

                        android:host="geyan.getui.com" />

                </intent-filter>

            </activity>

    此处多了一个 data,看到这个 data 标签,我们可以大胆的猜测,也许这个 applink 的是一个隐式启动。

    另外一个改动点是

        protected void onCreate(@Nullable Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_test);

            // ATTENTION: This was auto-generated to handle app links.

            Intent appLinkIntent = getIntent();

            String appLinkAction = appLinkIntent.getAction();

            Uri appLinkData = appLinkIntent.getData();

        }

    applink 的值即为之前配置的 url 链接,此处是为了接收数据用的,不再多说了。

    Associate website

    这一步最关键了,需要根据 APP 的证书生成一个 json 文件, APP 安装的时候会去联网进行校验。选择你的线上证书,然后点击生成会得到一个 assetlinks.json 的文件,需要把这个文件放到服务器指定的目录下

    基于安全原因,这个文件必须通过 SSL 的 GET 请求获取,JSON 格式如下:

    [{

      "relation": ["delegate_permission/common.handle_all_urls"],

      "target": {

        "namespace": "android_app",

        "package_name": "com.lenny.myapplication",

        "sha256_cert_fingerprints":

        ["E7:E8:47:2A:E1:BF:63:F7:A3:F8:D1:A5:E1:A3:4A:47:88:0F:B5:F3:EA:68:3F:5C:D8:BC:0B:BA:3E:C2:D2:61"]

      }

    }]

    sha256_cert_fingerprints 这个参数可以通过 keytool 命令获取,这里不再多说了。

    最后把这个文件上传到 你配置的地址/.well-know/statements/json,为了避免今后每个 app 链接请求都访问网络,安卓只会在 app 安装的时候检查这个文件。,如果你能在请求 https://yourdomain.com/.well-known/statements.json 的时候看到这个文件(替换成自己的域名),那么说明服务端的配置是成功的。目前可以通过 http 获得这个文件,但是在M最终版里则只能通过 HTTPS 验证。确保你的 web 站点支持 HTTPS 请求。

    若一个host需要配置多个app,assetlinks.json添加多个app的信息。

    若一个 app 需要配置多个 host,每个 host 的 .well-known 下都要配置assetlinks.json

    有没有想过 url 的后缀是不是一定要写成 /.well-know/statements/json 的?

    后续讲原理的时候会涉及到,这里先不细说。

    ###Test device

    最后我们本质仅是拿到一个 URL,大多数的情况下,我们会在 url 中拼接一些参数,比如

    https://yourdomain.com/products/123?coupon=save90

    1

    其中 ./products/123?coupon=save90 是我们之前在第二步填写的 path。

    那测试方法多种多样,可以使用通知,也可以使用短信,或者使用 adb 直接模拟,我这边图省事就直接用 adb 模拟了

    adb shell am start

    -W -a android.intent.action.VIEW

    -d "https://yourdomain.com/products/123?coupon=save90"

    [包名]

    使用这个命令就会自动打开 APP。前提是 yourdomain.com 网站上存在了 web-app 关联文件。

    相关文章

      网友评论

          本文标题:AppLink

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