以前,我使用以下动态链接在我的应用程序中启动所需的页面
http://jstock.co/a/news?code=1295.KL&symbol=PUBLIC+BANK+BHD
但是,对于没有安装我的应用程序的用户来说,这有一个缺点。对于没有安装我的应用程序的用户,这是他点击链接时发生的情况
- 前往 Google Play 商店
- 安装应用。
- 启动应用程序。 将转到应用的首页,而不是深层链接中指定的所需页面。
后来,我意识到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 - 用于授权请求。我会做的是:
- 从 Firebase Console 重新下载 google-services.json并覆盖你项目中的那个
- 检查是否为 json 文件中
/api_key/current_key
下的包名条目填充了 API key 参数 - 检查您是否包含了 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/