如何从使用Firebase的动态链接获取额外的参数? [英] How get extra parameter from dynamic link using Firebase?
问题描述
我手动创建了动态链接,并在链接上设置了一些附加参数,如下所示: https://XXXXX.goo.gl/?link=https%3A%2F%2Fairbanq .send.com%2Fsendmoney& apn = com.xxxx.xxxx& amv = 1& username = Adri& amount = 7.00
但是当应用程序打开我只是得到:https:// airbanq.send.com/sendmoney
没有addiotional参数
我使用这个示例代码
https://github.com/firebase/quickstart-android/tree/master/动态链接
任何帮助请
谢谢
我的代码
public String buildDeepLink(){
//获取此应用程序的唯一应用程序代码。
String appCode = AirBanqApp.mContext.getString(R.string.app_code);
//获取此应用程序的包名称。
String packageName = AirBanqApp.mContext.getPackageName();
//建立所有必需参数的链接
Uri.Builder builder = new Uri.Builder()
.scheme(https)
.authority appCode +.app.goo.gl)
.path(/)
.appendQueryParameter(link,deepLink)
.appendQueryParameter(apn,packageName);
//如果广告中使用深度链接,则此值必须设置为1.
if(isAd){
builder.appendQueryParameter(ad, 1\" );
}
//最低版本是可选的。
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); (Map.Entry< String,String>参数:customParameters.entrySet()){
($!
)
if(!customParameters.isEmpty()){
builder.appendQueryParameter(parameter.getKey(),parameter.getValue());
}
}
//返回已完成的深层链接。
return builder.build()。toString();
解决方案那是我的解决方案 p>
我解决了我的问题,我假设apn,用户名和数量他们是参数链接的一部分,但没有当我添加&我添加部分到主要的网址,添加参数到LINK字段,我需要首先创建这样的网址
https://airbanq.send.com/sendmoney?username=Adri&amount=7.00
然后使用URLEncoder.encode(queryParameters.toString(),UTF-8);
来产生这
https%3A%2F%2Fairbanq.send.com%2Fsendmoney%253Fusername%253DAdri%2526amount%253D7.00
然后附加到主要的url
I have created dynamic link manually and i set some additional parameters on the link, like this: https://XXXXX.goo.gl/?link=https%3A%2F%2Fairbanq.send.com%2Fsendmoney&apn=com.xxxx.xxxx&amv=1&username=Adri&amount=7.00
But when the app is opened i just get: "https:// airbanq.send.com/sendmoney" without the addiotional parameters
i am using this sample code https://github.com/firebase/quickstart-android/tree/master/dynamiclinks
any help please,
Thanks
My code
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<String, String> parameter : customParameters.entrySet()) {
builder.appendQueryParameter(parameter.getKey(), parameter.getValue());
}
}
// Return the completed deep link.
return builder.build().toString();
}
Thats was my solution
i solved my issue, i assumed the "apn", "username" and "amount" they were part of the parameter "LINK" in the url, but no when i add the "&" i am adding parts to the main url, to add parameters to the "LINK" field i need to create first the url like this
https://airbanq.send.com/sendmoney?username=Adri&amount=7.00
then use URLEncoder.encode(queryParameters.toString(), "UTF-8"); to generate this https%3A%2F%2Fairbanq.send.com%2Fsendmoney%253Fusername%253DAdri%2526amount%253D7.00
and then append to main 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<String, String> parameter : customParameters.entrySet()) {
queryParameters.append(String.format("&%1s=%2s", parameter.getKey(), parameter.getValue()));
}
}
return URLEncoder.encode(queryParameters.toString(), "UTF-8");
}
这篇关于如何从使用Firebase的动态链接获取额外的参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!