android7动态链接,android – 如何使用Firebase从动态链接中获取额外参数?

博客围绕Android应用程序打开时动态链接参数添加问题展开。作者给出构建动态链接的代码,最初假设参数是主URL一部分,后发现需先创建网址,用URLEncoder编码后附加到主URL,最终解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

但是当应用程序打开时,我得到:“https:// airbanq.send.com/sendmoney”

没有附加参数

请帮忙,

谢谢

我的代码

public String buildDeepLink() {

// Get the unique appcode for this app.

String appCode = AirBanqApp.mContext.getString(R.string.app_code);

// Get this app's package name.

String packageName = AirBanqApp.mContext.getPackageName();

// Build the link with all required parameters

Uri.Builder builder = new Uri.Builder()

.scheme("https")

.authority(appCode + ".app.goo.gl")

.path("/")

.appendQueryParameter("link", deepLink)

.appendQueryParameter("apn", packageName);

// If the deep link is used in an advertisement, this value must be set to 1.

if (isAd) {

builder.appendQueryParameter("ad", "1");

}

// Minimum version is optional.

if (minVersion > 0) {

builder.appendQueryParameter("amv", Integer.toString(minVersion));

}

if (!TextUtils.isEmpty(androidLink)) {

builder.appendQueryParameter("al", androidLink);

}

if (!TextUtils.isEmpty(playStoreAppLink)) {

builder.appendQueryParameter("afl", playStoreAppLink);

}

if (!customParameters.isEmpty()) {

for (Map.Entry parameter : customParameters.entrySet()) {

builder.appendQueryParameter(parameter.getKey(), parameter.getValue());

}

}

// Return the completed deep link.

return builder.build().toString();

}

解决方法:

那是我的解决方案

我解决了我的问题,我假设“apn”,“username”和“amount”它们是url中参数“LINK”的一部分,但是当我添加“&”时没有我正在向主网址添加部件,将参数添加到“LINK”字段我需要首先创建这样的网址

然后使用URLEncoder.encode(queryParameters.toString(),“UTF-8”);

生成这个

https://airbanq.send.com/sendmoney%3Fusername%3DAdri%26amount%3D7.00

然后附加到主URL

public String buildDeepLink() {

// Get the unique appcode for this app.

String appCode = AirBanqApp.mContext.getString(R.string.app_code);

// Get this app's package name.

String packageName = AirBanqApp.mContext.getPackageName();

String queryParamters = "";

try {

queryParamters = generateQueryParameters();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

if (!TextUtils.isEmpty(queryParamters)) {

deepLink = deepLink + queryParamters;

}

// Build the link with all required parameters

Uri.Builder builder = new Uri.Builder()

.scheme("https")

.authority(appCode + ".app.goo.gl")

.path("/")

.appendQueryParameter("link", deepLink)

.appendQueryParameter("apn", packageName);

// If the deep link is used in an advertisement, this value must be set to 1.

if (isAd) {

builder.appendQueryParameter("ad", "1");

}

// Minimum version is optional.

if (minVersion > 0) {

builder.appendQueryParameter("amv", Integer.toString(minVersion));

}

if (!TextUtils.isEmpty(androidLink)) {

builder.appendQueryParameter("al", androidLink);

}

if (!TextUtils.isEmpty(playStoreAppLink)) {

builder.appendQueryParameter("afl", playStoreAppLink);

}

// Return the completed deep link.

return builder.build().toString();

}

private String generateQueryParameters() throws UnsupportedEncodingException {

StringBuilder queryParameters = new StringBuilder();

//server purposes

queryParameters.append("?*code*");

if (!customParameters.isEmpty()) {

for (Map.Entry parameter : customParameters.entrySet()) {

queryParameters.append(String.format("&%1s=%2s", parameter.getKey(), parameter.getValue()));

}

}

return URLEncoder.encode(queryParameters.toString(), "UTF-8");

}

标签:android,firebase,firebase-dynamic-links

来源: https://codeday.me/bug/20191001/1838932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值