我无法检索应在 Android 上的意图数据内的 Firebase 动态链接

Posted

技术标签:

【中文标题】我无法检索应在 Android 上的意图数据内的 Firebase 动态链接【英文标题】:I cannot retrieve the Firebase dynamic link that should be inside the intent data on Android 【发布时间】: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

【问题讨论】:

能否附上你拥有的相关代码? 我已经编辑了以上内容 【参考方案1】:

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

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

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

【讨论】:

那么在android中接收时我可以从短链接获取/Ab1D吗? 你可以,但你不应该需要 - 短链接应该解析为它包装的长链接,然后你查看那个 URL 其实我需要验证短链接是否过期。没有短链接,我无法确定点击的链接是否有效

以上是关于我无法检索应在 Android 上的意图数据内的 Firebase 动态链接的主要内容,如果未能解决你的问题,请参考以下文章

无法解析 Android 编程的意图

如何在Unity3d游戏中检索Android安装引荐来源网址

无法在新活动中检索额外数据

例外:从意图存储ArrayList时“无法转换为java.util.ArrayList”

Android:无法从意图获取数据

Android上的启动画面无法正常工作