以前,我使用以下动态链接在我的应用中启动所需的页面
http://jstock.co/a/news?code=1295.KL&symbol=PUBLIC+BANK+BHD
但是,对于没有安装我的应用的用户来说,这有一个缺点。对于没有安装我的应用的用户,这是他点击链接时发生的事情
稍后,我意识到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
。
知道我错过了哪一步?
感谢。
答案 0 :(得分:4)
错误请求可能表示无效的API密钥 - 用于授权请求。我会做的是:
/api_key/current_key
下的包名称条目是否填写了API密钥参数apply
build.gradle 您可以查看文档中的步骤: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(&amp; d = 1)。这显示了在控制台中要解决的几个警告。
答案 1 :(得分:2)
我的猜测是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类型的对象而不是参数。只是一个想法:)