当前位置: 首页 > 知识库问答 >
问题:

Firebase Deep Link将打开Play Store而不是应用程序

苏雅珺
2023-03-14

大家好,我是Firebase动态链接的新手,我自己也在学习,我一直在遵循本教程来完成它。

我的代码创建方法是:

private void createLink() {
        String link = "https://play.google.com/store/apps/details?id=com.test.app&referrer="+"test1234" ;
        FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(Uri.parse(link))
                .setDynamicLinkDomain("testxyz.page.link")
                .setAndroidParameters(
                        new DynamicLink.AndroidParameters.Builder("com.test.app")
                                .setMinimumVersion(125)
                                .build())
                .buildShortDynamicLink().addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.e("xyz", "error:::" + e.toString());
            }
        })
                .addOnSuccessListener(new OnSuccessListener<ShortDynamicLink>() {
                    @Override
                    public void onSuccess(ShortDynamicLink shortDynamicLink) {
                        Log.e("xyz", "link:::" + shortDynamicLink.getShortLink());
                    }
                });
    }

它给我的网址像:https://testxyz.page.link/RhSKMYMnE2YHLbZk6我复制并粘贴到我的浏览器,它工作正常,带我到播放商店,并显示我需要的应用程序,我想打开这个链接与应用程序id:com.test.app

我所做的测试是点击这个网址从我的Android手机,有应用程序安装与应用程序id:com.test.app,它应该与我点击的网址打开!

我收到的链接在我的应用程序与id:com.test.app方法:

private void check(){
        FirebaseDynamicLinks.getInstance()
                .getDynamicLink(getIntent())
                .addOnSuccessListener(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("deeplink","link:::"+deepLink);
                            Toast.makeText(IndexActivity.this, "link:::"+deepLink, Toast.LENGTH_SHORT).show();
                        }else{
                            Log.e("deeplink","link is null:::");
                            Toast.makeText(IndexActivity.this, "link is null:::", Toast.LENGTH_SHORT).show();
                        }
                        //
                        // If the user isn't signed in and the pending Dynamic Link is
                        // an invitation, sign in the user anonymously, and record the
                        // referrer's UID.
                        //

                    }
                });
    }

这个方法被放置在我的主要活动中,在我的飞溅活动之后!

所以清单上有:

<activity
            android:name=".MainActivity"
            android:screenOrientation="portrait">
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW"/>

                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>

                <data
                    android:host="https://testxyz.page.link"
                    android:scheme="http"/>
                <data
                    android:host="https://testxyz.page.link"
                    android:scheme="https"/>
            </intent-filter>

        </activity>

问题是:当我点击Firebase生成的动态链接时,它会工作,并将我带到浏览器,用我所需的应用打开Google Play商店。

我想要的是打开应用程序,获取推荐人的动态链接信息!

我做错的是我不知道,因为我对Firebase深度链接完全陌生。

实际上,我想创建一个链接,我可以发送给其他用户与我的用户名,如果用户点击该链接将打开应用程序,如果安装,如果没有安装将用户带到应用程序商店安装应用程序,并获得深层链接信息为推荐人

非常感谢您的帮助或指导,提前感谢!

共有2个答案

郁鸿博
2023-03-14

设置您的android参数如下:

setAndroidParameters(new DynamicLink.AndroidParameters.Builder(BuildConfig.APPLICATION_ID)
                                .setMinimumVersion(1)
                                .build())

你的动态链接无法打开你的应用程序,因为你没有在Android参数中定义你的包。


小心:Firebase的构造函数看起来像是将包名添加为默认值,但它不起作用。

public Builder() {
    if (FirebaseApp.getInstance() == null) {
        throw new IllegalStateException("FirebaseApp not initialized.");
    } else {
        this.zzf = new Bundle();
        this.zzf.putString("apn", FirebaseApp.getInstance().getApplicationContext().getPackageName());
    }
}
何涵育
2023-03-14

我的解决方案与代码无关,我必须更改默认浏览器。谷歌浏览器劫持了我的动态链接。我现在使用的是brave浏览器,它可以直接打开我的应用程序

 类似资料:
  • 如何在localhost:8080而不是tomcat主页中打开web应用程序?例如,我希望在mysite.com:8080/mywebapp中打开mysite.com:8080,而不使用任何反向代理

  • 我如何在Android和IOS上使用Flatter打开PlayStore/AppStore的特定URL,具体取决于执行该URL的智能手机?我的意思是,我想打开应用程序,而不是浏览器之类的东西。 在这个线程中,我找到了一些android的原生方法,但我如何使用flutter做到这一点? 如果目前没有办法做到这一点,这将是一个很好的功能来实现插件url_launcher。

  • 我试图通过消息推送远程更新徽章值。一切正常,但当应用程序打开时,我得到一个空警报(包含我的应用程序名称和关闭按钮)。 我在苹果的留档中读到了静默通知,但似乎即使在通知有效载荷中指定内容可用: 1,有效载荷也不能包含通知静默的徽章。 在没有收到警报的情况下更新徽章可能吗?

  • 我已经创建了一个Windows Phone 8.1应用程序,它可以将吐司通知发送到Windows Phone的操作中心。现在我需要在用户点击toast通知时打开另一个应用程序。我怎样才能实现这个..?我可以打开创建toast通知的同一个应用程序。我怎么才能打开另一个我指定的应用程序...?

  • 问题内容: 有一个超链接。单击后,我希望在外部浏览器中打开链接。 网络上引用的常用方法似乎是: 但是我没有提及。该链接是从对话框打开的,该对话框是从控制器打开的,而该对话框是通过fxml文件打开的,因此获得对Application对象的引用将非常痛苦。 有人知道这样做的简单方法吗? 干杯 问题答案: 解决方案1:通过您的应用程序向下传递引用。 这可能类似于您预期的“非常痛苦”的方法。但基本上,您会

  • 我是Java新手,正在尝试在NetBeans中运行Java awt/javax.swing应用程序。以下是github链接。 在我按下run之后,即使Netbeans一直在其窗口中显示,并且Java application图标下出现了一个圆点,也没有真正发生任何事情(实际上没有打开Java application窗口,我知道情况是这样的,因为当我用鼠标单击Java application图标时,没