为什么无法检索/接收完整/长动态链接?

时间:2017-02-07 15:39:00

标签: android firebase intentfilter deep-linking firebase-dynamic-links

我在此github项目之后创建了深层/动态链接。

以下是创建的链接:https://appcode.app.goo.gl/?link=http://example.com/-example&apn=com.abc.xxx&amv=16&ad=0&extraParameter=null

这是我用来分享它的方法:

private void shareDeepLink(String deepLink) {
            Intent intent = new Intent(Intent.ACTION_SEND);
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_SUBJECT, "Firebase Deep Link");
            intent.putExtra(Intent.EXTRA_TEXT, deepLink);

            itemView.getContext().startActivity(intent);
}

这是我应用的intent-filters文件中定义的AndroidManifest.xml

<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="example.com" android:scheme="http"/>
      <data android:host="example.com" android:scheme="https"/>
</intent-filter>

这就是我尝试接收共享的deep-link

的方式
boolean autoLaunchDeepLink = false;
        AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
                .setResultCallback(
                        new ResultCallback<AppInviteInvitationResult>() {
                            @Override
                            public void onResult(@NonNull AppInviteInvitationResult result) {
                                if (result.getStatus().isSuccess()) {
                                    // Extract deep link from Intent
                                    Intent intent = result.getInvitationIntent();
                                    final String deepLink = AppInviteReferral.getDeepLink(intent);
                                    Log.d("deepLinkMainActivity", deepLink);

                                } else {
                                    Log.d("getInvitation", "getInvitation: no deep link found.");
                                }
                            }
                        });

以下是注销的内容(已收到深层链接):http://example.com/-example

正如您可以清楚地看到的那样,我没有得到所创建的确切深层链接,而是我得到了它的更改版本。为什么呢?

我怎样才能获得完全相同的创建和共享的深层链接?

3 个答案:

答案 0 :(得分:2)

您正在正确收回深层链接

这是生成的完整链接,其中包含apn之类的信息:应用的包名,要知道的信息,例如需要打开哪个应用

https://appcode.app.goo.gl/?link=http://example.com/-example&apn=com.abc.xxx&amv=16&ad=0&extraParameter=null

这是你的深层链接 链接= http://example.com/-example。因此,如果您想添加更多参数,可以在此处执行,例如下面的示例

链接= http://example.com/-example&blabla

所以你有结果https://appcode.app.goo.gl/?link=http://example.com/-example&blabla&apn=com.abc.xxx&amv=16&ad=0

如果您希望此部分可以编码为http://example.com/-example&blabla

你可以尝试一下,让我知道。

您可以在https://firebase.google.com/docs/dynamic-links/android

中查看此信息

答案 1 :(得分:0)

替换

{{ query_naissance }}

<data
       android:host="xxx.abc.com"
       android:scheme="https"/>

答案 2 :(得分:0)

我也遇到了这个问题。问题是我收到的链接是“长链接”。 我们可以从firebase创建两种类型的链接:

  1. 短链接 https://appcode.app.goo.gl/?email=abc@gmail.com
  2. 长链接 https://appcode.app.goo.gl/?link=http://example.com/-example&apn=com.abc.xxx&amv=16&ad=0&extraParameter=null

所以这就是为什么我要面对这个问题。 我通过从

获取整个链接解决了该问题
 Uri uriData = intent.data

并从链接中获取特定的查询参数:

  String email = uriData.getQueryParameter("email")

我希望它会帮助任何人!