【问题标题】:I cannot retrieve the Firebase dynamic link that should be inside the intent data on Android我无法检索应在 Android 上的意图数据内的 Firebase 动态链接
【发布时间】:2017-12-08 15:01:45
【问题描述】:

当用户在 Android 上点击它时,我需要检索短动态链接。但是,当用户点击链接时,我只会在使用 Firebase 上的默认实现时收到深层链接。

当我使用不同的方法(使用 Get Query)时,我收到了空值。

请指教。

Short dynamic link on firebase

FireBase 实施:

    FirebaseDynamicLinks.getInstance()
                            .getDynamicLink(getIntent())
                            .addOnSuccessListener(SplashActivity.this, new OnSuccessListener<PendingDynamicLinkData>() {
                                @Override
                                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                                    // Get deep link from result (may be null if no link is found)
                                    Uri deepLink = null;


                                    if (pendingDynamicLinkData != null) {
                                        deepLink = pendingDynamicLinkData.getLink();
                                        Log.e("R4L0",String.valueOf(deepLink));
                                        Log.e("R4L1",String.valueOf(getIntent().getData()));
                                        Log.e("R4L2",pendingDynamicLinkData.toString());
                                    }


                                    // Handle the deep link. For example, open the linked
                                    // content, or apply promotional credit to the user's
                                    // account.
                                    // ...


                                    // ...
                                }
                            })
                            .addOnFailureListener(SplashActivity.this, new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    Log.w("R4L", "getDynamicLink:onFailure", e);
                                }
                            });


Get uri implementation:

  Uri appLinkData = getIntent().getData();
                    if (!appLinkData.equals(Uri.EMPTY)){
                Log.e("R4L","URL "+String.valueOf(appLinkData.getQuery()));
                String CurrentString = String.valueOf(appLinkData.getQuery());
                String[] separated = CurrentString.split("\\?");
                String[] linkData=separated[1].split("=");

                if (linkData[0].equals("offer")){
                    Log.d("separated",separated[1]);
                    Intent intent = new Intent(SplashActivity.this,Display_Clicked_Offer_Info.class);
                    intent.putExtra("IDITEM",separated[1]);
                    startActivity(intent);
                    finish();
                }
                else if(linkData[0].equals("shop")) {
                }

Using Get Query

【问题讨论】:

  • 能否附上你拥有的相关代码?
  • 我已经编辑了以上内容

标签: android firebase firebase-dynamic-links


【解决方案1】:

这不起作用的原因是短链接没有查询组件!

Firebase 动态链接短链接的格式为:https://appcode.app.goo.gl/Ab1D - 所以实际的短代码是路径的一部分。

在后台,Firebase 将该短链接发送到动态链接 API,并将其解析回一个长 URL。长网址很可能有查询参数。

【讨论】:

  • 那么在android中接收时我可以从短链接获取/Ab1D吗?
  • 你可以,但你不应该需要 - 短链接应该解析为它包装的长链接,然后你查看那个 URL
  • 其实我需要验证短链接是否过期。没有短链接,我无法确定点击的链接是否有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
相关资源
最近更新 更多