2

我正在这个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

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

以及如何获得创建和共享的完全相同的深层链接?

4

3 回答 3

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

于 2017-02-07T21:39:37.327 回答
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")

我希望它会帮助任何人!

于 2020-06-04T19:36:17.993 回答
0

代替

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

<data
       android:host="example.com"
       android:scheme="http"/>
于 2017-02-08T11:01:29.163 回答