2

我没有可以注释以支持应用链接的公共 Web URL,因此我使用 Facebook 的移动托管 API 来支持应用链接。

根据 app links doc,我可以通过 App Links Hosting API 提供的规范 URL ( https://fb.me/xxxxxxxxxx )。规范的URL包括三个信息,URL、APP名、包名,URL是这样的:

    my_app_scheme://actions?ads_name=1

我尝试从 Android Data 获取 URL 的 QueryParameter("ads_name") 以打开定义的应用页面。我使用以下代码。

    AppLinkData.createFromActivity(MainActivity.this);
    if (AppLinks.getTargetUrl(intentOtherApp) != null) {
       Uri targetUrl = AppLinks.getTargetUrl(intentOtherApp);
           if (targetUrl != null) {

            Bundle appLinkData = AppLinks.getAppLinkData(getIntent());
            if (appLinkData != null) {
                String targetURLString = appLinkData.getString("target_url");
                Uri targetURL = Uri.parse(targetURLString);
                JSONObject jsonObject = new JSONObject();

                String adsName = targetURL.getQueryParameter("ads_name");

                try {
                    if (adsName != null) {
                        jsonObject.put("ads_name", adsName);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            */
        }
    }

但我无法获取数据,我总是只得到规范的 URL。如何从 Facebook 应用程序链接传递我的查询数据?是否使用相同的方法安装或不安装应用程序?

4

1 回答 1

1

target_url 始终是共享的 URL,在您的情况下,它是 https://fb.me/xxxxxxxxxx

如果您想要查询参数,您有两种选择:

  1. 分享时将查询参数添加到您的规范网址(例如 https://fb.me/xxxxxxxxxx?ads_name=1)
  2. 而不是获取 target_url,只需使用传入意图的数据字段中的 url(例如Uri uri = getIntent().getData(),这将是自定义 url,或 my_app_scheme://actions?ads_name=1)
于 2015-08-18T18:58:51.777 回答