Firebase Deep Link 打开 Play 商店而不是应用程序

use*_*362 5 android deep-linking firebase

您好,我是 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());
                    }
                });
    }
Run Code Online (Sandbox Code Playgroud)

它给了我这样的网址:https://testxyz.page.link/RhSKMYMnE2YHLbZk6 我将其复制并粘贴到我的浏览器中,它工作正常,带我到游戏商店并显示了我想用此链接打开的所需应用程序应用程序 ID:com.test.app

我所做的测试是从我的 Android 手机上单击此 url,该手机安装了应用程序,应用程序 ID:com.test.app,应该使用我单击的 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.
                        //

                    }
                });
    }
Run Code Online (Sandbox Code Playgroud)

此方法被放置在我的 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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

实际上,我想创建一个链接,我可以使用我的用户名发送给其他用户,如果用户单击该链接,将打开应用程序(如果已安装),如果未安装,则将用户带到应用程序商店安装应用程序并获取深入信息推荐人的链接信息

非常感谢任何帮助或教程,提前致谢!

Roh*_*rya 2

设置你的 android 参数如下:

setAndroidParameters(new DynamicLink.AndroidParameters.Builder(BuildConfig.APPLICATION_ID)
                                .setMinimumVersion(1)
                                .build())
Run Code Online (Sandbox Code Playgroud)

您的动态链接无法打开您的应用程序,因为您没有在 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());
    }
}
Run Code Online (Sandbox Code Playgroud)