android - 缩短 Firebase 动态链接

标签 android deep-linking firebase-dynamic-links

以前,我使用以下动态链接在我的应用程序中启动所需的页面

http://jstock.co/a/news?code=1295.KL&symbol=PUBLIC+BANK+BHD

但是,对于没有安装我的应用程序的用户来说,这有一个缺点。对于没有安装我的应用程序的用户,这是他点击链接时发生的情况

  1. 前往 Google Play 商店
  2. 安装应用。
  3. 启动应用程序。 将转到应用的首页,而不是深层链接中指定的所需页面。

后来,我意识到Firebase动态链接可以解决我的问题。如果我使用以下 URL,一切正常。

https://g7b6h.app.goo.gl/?link=http%3A%2F%2Fjstock.co%2Fa%2Fnews%3Fcode%3D1295.KL%26symbol%3DPUBLIC%2BBANK%2BBHD&apn=org.yccheok.jstock.gui

对于第 3 步,用户现在可以直接转到深层链接中指定的所需页面,而不是转到应用的第一页。

不过,我觉得上面的链接太长了。看完https://firebase.google.com/docs/dynamic-links/android/create ,我尝试使用以下方式缩短它

private void build() {
    Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
            .setLongLink(Uri.parse("https://g7b6h.app.goo.gl/?link=http%3A%2F%2Fjstock.co%2Fa%2Fnews%3Fcode%3D1295.KL%26symbol%3DPUBLIC%2BBANK%2BBHD&apn=org.yccheok.jstock.gui"))
            .buildShortDynamicLink()
            .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
                @Override
                public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                    if (task.isSuccessful()) {
                        Log.i("CHEOK", "success");
                        // Short link created
                        Uri shortLink = task.getResult().getShortLink();
                        Uri flowchartLink = task.getResult().getPreviewLink();

                        Log.i("CHEOK", "shortLink = " + shortLink);
                        Log.i("CHEOK", "flowchartLink = " + flowchartLink);

                    } else {
                        Log.i("CHEOK", "error : " + task.getException().getMessage());
                        // Error
                        // ...
                    }
                }
            });
}

但是,每次我都会收到error : Bad Request

知道我错过了哪一步吗?

谢谢。

最佳答案

Bad Request 很可能表示无效的 API key - 用于授权请求。我会做的是:

  1. Firebase Console 重新下载 google-services.json并覆盖你项目中的那个
  2. 检查是否为 json 文件中 /api_key/current_key 下的包名条目填充了 API key 参数
  3. 检查您是否包含了 google-services 插件并在应用程序 build.gradle 的底部调用了 apply

您可以对照文档中的步骤进行检查:https://firebase.google.com/docs/android/setup#manually_add_firebase

这有望修复 API 访问。

当您使用它时,您可能想要检查链接的调试版本:https://g7b6h.app.goo.gl/?link=http%3A%2F%2Fjstock.co%2Fa%2Fnews%3Fcode%3D1295.KL%26symbol%3DPUBLIC%2BBANK%2BBHD&apn=org.yccheok.jstock.gui&d=1 (&d=1 最后)。这显示了一些要在控制台中解决的警告。

关于android - 缩短 Firebase 动态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45563652/

相关文章:

java - 面剔除 - 隐藏立方体中所有非正面的面

android - 如何发送到 "Miscellaneous"通知 channel ?

Android MediaPlayer - setPlaybackParams 引发安全异常

flutter - 使用 Flutter 和 Stripe 支付成功后返回应用

android - 如何创建具有自定义 ID 值的微调器?

ios - 我可以为我的 iOS 和 Web 应用程序使用相同的分支子域吗?

ios - 这可以在 iOS 上处理 302 重定向之前的通用链接吗?

ios - 如果应用程序已安装在 ios 中,则应用程序无法打开并始终从深层链接重定向到应用程序商店

ios - Firebase Dynamic Link 无法直接打开应用

android - 指定为非 null 的参数 pendingDynamicLinkData 为 null