Firebase Deep Link打开Play商店而不是App

时间:2018-07-07 10:35:04

标签: android firebase deep-linking

您好,我是Firebase动态链接的新手,自己学习它,我一直在按照this教程进行学习。

我的代码创建方法是:

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 我将其复制并粘贴到浏览器中,并且工作正常,将我带到Play商店,并显示了我要打开的所需应用,并带有以下链接,其中包含应用ID: com.test.app

我要做的测试是从安装了应用程序ID为 com.test.app 的应用程序的Android手机中单击该URL,应使用我单击的URL来打开它!

我在我的应用程序中收到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.
                        //

                    }
                });
    }

此方法被放置在我的Splash活动之后的主要活动中!

清单有:

<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生成的动态链接时,它可以工作,并带我到浏览器并使用所需的应用程序打开Goog​​le Play商店。

我想要打开的应用程序并获取引荐来源网址的动态链接信息!

我做错了,因为我是Firebase Deep Linking的新手,所以我不知道。

实际上,我想创建一个链接,我可以使用我的用户名将其发送给其他用户,如果用户单击该链接,则会打开该应用程序(如果已安装),如果未安装,则将用户带到应用程序商店安装该应用程序,获取引荐来源网址

的深层链接信息

非常感谢任何帮助或教程,在此先感谢您!

2 个答案:

答案 0 :(得分:0)

将您的android参数设置为遵循.setAndroidParameters( new DynamicLink.AndroidParameters.Builder(BuildConfig.APPLICATION_ID) .setMinimumVersion(1) .build())

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

答案 1 :(得分:0)

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