android - 向 Firebase 动态链接添加参数

标签 android firebase firebase-dynamic-links

我想让用户通过单击按钮并向其他潜在用户发送链接来分享我的应用程序中的产品,例如

www.myapp.com/offer/123

在那里,“123”必须在用户单击按钮的那一刻生成,以便稍后处理它

FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    Uri deepLink;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();

但不幸的是我无法传递参数。

String link = "http://www.myapp.com/offer/123";
        Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(link))
                .setDynamicLinkDomain("fgd3e.app.goo.gl")
                .buildShortDynamicLink()
                .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
                    @Override
                    public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                        if (task.isSuccessful()) {
                            // Short link created
                            Uri shortLink = task.getResult().getShortLink();
                            Uri flowchartLink = task.getResult().getPreviewLink();

谁能教我如何在运行时使用自定义参数创建动态链接,以便将目标用户重定向到特定产品详细信息?

最佳答案

简短回答:使用查询参数而不是路径变量,您可以使用 pendingDynamicLinkData 返回的 Uri 对象中的 getQueryParameter 方法.getLink()


我一直在做的是使用查询参数而不是路径变量。

而不是发送 http://www.myapp.com/offer/123 ,我发送类似 http://www.myapp.com/?offer=123 的内容

要动态添加参数,我只是连接字符串:"http://www.myapp.com/?offer="+ myValue

此 URL 又是在 firebase 中创建的动态链接的查询参数:

String url = "https://YourDynamicLinkIdentifier.app.goo.gl/?link=https://myapp.com?offer=" 
+ myOfferVar 
+ "&apn=com.your.apn"; // << Dont forget to change this too

这个生成的 URL 就是我发送给 url shortener 的那个。

然后在回调 onSuccess(PendingDynamicLinkData pendingDynamicLinkData) 中调用 pendingDynamicLinkDatagetLink(),就像您已经在做的那样。

现在您有了一个 Uri 对象,您可以通过调用 getQueryParameter("offer") 方法轻松获取参数。

if (pendingDynamicLinkData != null) {
     deepLink = pendingDynamicLinkData.getLink();
     String offerKey = deepLink.getQueryParameter("offer");

注意:如果您仍然喜欢使用路径变量,您可以获得 Uri 路径的最后一段。参见 How to obtain the last path segment of an uri

关于android - 向 Firebase 动态链接添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49826185/

相关文章:

android - 在 ViewPager 中使用 RecyclerView 的异步 Firebase 任务

android - 使用 React Native Realm 通过多个 List 对象进行查询

android - Xamarin Android "ScrollView"奇怪的行为

android - 在使用 Retrofit2 的 Android Studio 上,JSON 中位置 0 处出现意外的 token # 错误

android - Dagger -Android : Missing setters for modules

angular - Firebase i18n 重写语言覆盖 cookie 被忽略

javascript - Firebase 云消息传递 : event is not defined

java - 我怎样才能让firebase短链接脱离任务

java - 服务器上的动态链接创建返回警告

Flutter 上的 Firebase 动态链接