缩短火力地堡动态链接
以前,我用下面的动态链接到我的应用程序缩短火力地堡动态链接
http://jstock.co/a/news?code=1295.KL&symbol=PUBLIC+BANK+BHD
但推出预期页面,这有一个缺点,对谁不会安装我的应用程序的用户。对于谁不安装我的应用程序的用户,这是当他点击了链接
- 去谷歌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
对于第三步,用户可以直接转到深层链接指定的所需页面,而不是转到应用的第一页。
但是,我觉得上面的链接太长了。阅读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
。
任何想法我错过了什么步骤?
谢谢。
错误的请求可能表明一个无效的API密钥 - 用于授权请求。我会做的是:从Firebase Console
- 重新下载谷歌-services.json并覆盖一个项目中的
- 检查API密钥参数充满了
/api_key/current_key
下你的包名的条目在JSON文件 - 检查是否已包括了谷歌的服务插件,并在您的应用程序的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结束)。这显示了几个警告在控制台中解决。
我的猜测是您的setLongLink
方法中的URI不需要使用UTF-8编码。 Firebase的示例显示了这一点:
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLongLink(Uri.parse("https://abc123.app.goo.gl/?link=https://example.com/&apn=com.example.android&ibn=com.example.ios"))
.buildShortDynamicLink()
希望这能解决您的问题,但我从不真正了解Firebase。
我以更简单的方式处理这个问题的建议是将深层链接切换到Branch(我在那里完全披露,但之前使用Firebase开发)。它会自动生成短链接,因为链接实际上将JSON类型的对象存储在引擎中而不是参数中。只是一个想法:)
谢谢。当我重新下载'google-services.json'时,它可以工作。 API密钥有所不同。当我测试生成的'https:// g7b6h.app.goo.gl/GkXlEGTokGA3Cr7r2'时,它按预期工作。然而,流程图中的两个警告让我感到困惑。它声明'org.yccheok.jstock.gui'和'org.yccheok.demo'缺少SHA256。我已经在发布和调试密钥中检查了SHA256的两倍,它们与Firebase控制台中的相匹配。另外,我没有在firebase控制台中使用包'org.yccheok.demo'的应用程序。因此,这个警告信息使我更加困惑。我应该忽略这些警告吗? –