通过 Firebase 动态链接传递多个参数 Android

Pass multiple params via Firebase Dynamic links Android

我使用过 Firebase Dynamics link,它可以打开我的应用程序、进入 Play 商店或进入 URL。但是当我通过link传递一些参数时,我只能得到第一个参数。 这是我的动态 links:

https://xx.app.goo.gl/?link=http://xx.com/?usn=abc&pass=def&apn=com.xx&afl=http://google.com

我用这段代码得到了 link:

// Build GoogleApiClient with AppInvite API for receiving deep links
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(AppInvite.API)
                .build();

        // Check if this app was launched from a deep link. Setting autoLaunchDeepLink to true
        // would automatically launch the deep link if one is found.
        boolean autoLaunchDeepLink = false;
        AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
                .setResultCallback(
                        result -> {
                            if (result.getStatus().isSuccess()) {
                                // Extract deep link from Intent
                                Intent intent = result.getInvitationIntent();
                                String deepLink = AppInviteReferral.getDeepLink(intent);
                                Logger.e(deepLink);
                            }
                        }
                );

并且日志打印:http://xx.com/?usn=abc(pass=def 丢失) 有人解决了这个问题吗?

需要URL encodelink参数的值,否则系统分不清什么是DynamicLink的参数,什么是子参数动态 Link.

link 参数

这意味着最终的 URL 应该看起来像 https://xx.app.goo.gl/?link=http%3A%2F%2Fxx.com%2F%3Fusn%3Dabc%26pass%3Ddef&apn=com.xx&afl=http://google.com

重要说明: 如果您(我怀疑)试图将用户名和密码作为明文 link 参数传递,这是一个 非常糟糕的主意。说真的,不要这样做。阅读 this answer 了解满足此类要求的正确方法。

只要你传入 url:

https://link.example.com?param="value1"&param2="value2 “ ...