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

如何在android应用程序中从Firebase动态链接(FDL)中读取查询参数

郗学
2023-03-14

我正在开发一个Android应用程序,我已经使用Firebase密码认证来登录用户。

在用户提供他们的电子邮件和密码后,我将使用FirebaseAuth SDK发送一封验证电子邮件。

/**  SEND A VERIFICATION MAIL TO THE USER **/
ActionCodeSettings.Builder settingBuilder  =  ActionCodeSettings.newBuilder();
String url = getString(R.string.link_mail_verification);

settingBuilder.setUrl(url).setHandleCodeInApp(true);

ActionCodeSettings settings = settingBuilder.build();

user.sendEmailVerification(settings).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {

if(task.isSuccessful()){

   Log.e("MAIL_VERIFICATION", "onComplete: mail verification sent" );

}else{
    // not sent

  }
 }
});

在验证他们的电子邮件时,我希望用户在应用程序中被直接重定向,如果它是安装的,这就是我使用动态链接的地方

FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent()).addOnSuccessListener(new OnSuccessListener<PendingDynamicLinkData>() {
        @Override
        public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {

            Uri deepLink = null;
            if(pendingDynamicLinkData != null){
                deepLink = pendingDynamicLinkData.getLink();
            }

            // trying to get from the intent
            if(deepLink != null){

                 Uri intentData = getIntent().getData();
                 if(intentData != null){

                     String code =  getIntent().getStringExtra("oobCode"); // always returns null

                 }
            }
        }
    });

方法2:尝试从PendingDynamicLinkData获取查询参数

 FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent()).addOnSuccessListener(new OnSuccessListener<PendingDynamicLinkData>() {
        @Override
        public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {

            Uri deepLink = null;
            if(pendingDynamicLinkData != null){
                deepLink = pendingDynamicLinkData.getLink();
            }

            // trying to get from the deep link URI
            if(deepLink != null){

                String code = deepLink.getQueryParameter("oobCode"); // returns null too
            }
        }
    });

下面是我的manifest.xml

<activity
        android:name=".activities.MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data
                android:host="@string/app_link_domain"
                android:scheme="https"
              />
        </intent-filter>

    </activity>

共有1个答案

梁丘高朗
2023-03-14

这不是一个正式的答案--只是根据我的经验--附加到动态链接本身的查询参数不会传递到您的深层链接。解决方案:如果您想要将查询参数追加到您的深层链接(用户通过动态链接获得的实际url),那么您所要做的就是在创建动态链接时追加这些参数。在您的例子中--在创建链接时,您应该在firebase控制台中定义“https://leliberalpress.com/verification?some_param=some_value&another_param=some_other_value”,而不是“https://leliberalpress.com/xkts”,动态链接本身没有查询参数--即保留:“https://leliberalpress.page.link/xkts”

 类似资料:
  • 我直接在web界面中生成了一个新的动态链接。这基本上将用于每个人,或者这是我的希望。让我们将该链接称为link.some-app.com/email-link。然后,我将其设置为指向https://some-app-123f.firebaseapp.com/__/auth/action。去第一个带我去第二个,到目前为止一切都很好。这些链接只是打开网页,而不是应用程序,也没有中间页面。 我可以用li

  • 我已经在我的设备上本地开发了一个android应用程序(应用程序还没有在android play商店上)。我有以下逻辑在主体活动中获得深度链接。 我用Firebase控制台建立了一些动态链接,并在手机浏览器中打开。但它不是打开我的应用程序并到达行字符串deepLink=appinvitereferral.getdeeplink(intent); 我在清单文件中有意图过滤器。

  • 我在firebase控制台中创建了一个动态链接,这个动态链接指向Play Store中的一个应用程序(即我使用这个链接通过WhatsApp与其他用户共享这个应用程序)。另外,我通过getDynamicLink方法在我的应用程序中接收深度链接。 当我向动态链接追加查询参数()时,Play Store页面将出现,但我无法在link方法中接收深度链接,该链接为空。如何将查询参数追加到动态链接并在安装时重

  • 我遵循了Firebase动态链接文档中的所有步骤: 已将团队Id添加到firebase控制台 已添加自定义域 启用的关联域 已添加到信息URL方案 然而,当我点击动态链接时,它总是重定向到AppStore,而不是应用程序。我已经尝试了不间断的应用程序,重新启动手机和重新安装。如何让这个深度链接发挥作用? 附注:我的应用程序还没有发布到AppStore。

  • 有人试用过新的Firebase SDK for Unity吗(https://firebase.google.com/docs/unity/setup)? 当我尝试集成动态链接功能时,当有邀请时,它会使应用程序崩溃。 我创建了一个全新的项目与最低设置(https://firebase.google.com/docs/dynamic-links/unity)为Android添加动态链接到我的项目。当

  • Playstore应用程序中有2个案例 正常安装(Playstore显示打开按钮) 测试用例: 从Firebase动态链接下载应用程序,安装后Playstore将显示“继续”按钮: 有两个选项,用户可以在成功安装后从中打开应用程序。 单击“继续”按钮打开应用程序- 大多数用户没有点击“继续”按钮,因为这是正常的人类行为,因此我失去了“推荐人”链接。 这是Firebase的预期行为吗?如何避免这个问