2016-07-07 10 views
8

Ich habe Dynamic Link manuell erstellt und i gesetzt, einige zusätzliche Parameter auf den Link, wie folgt aus: https://XXXXX.goo.gl/?link=https%3A%2F%2Fairbanq.send.com%2Fsendmoney&apn=com.xxxx.xxxx&amv=1&username=Adri&amount=7.00Wie erhalten Sie zusätzliche Parameter von Dynamic Link mit Firebase?

Aber wenn die App bekomme ich nur geöffnet wird: "https: // airbanq.send.com/sendmoney" ohne die addiotional Parameter

ich bin mit diesem Beispielcode https://github.com/firebase/quickstart-android/tree/master/dynamiclinks

jede Hilfe bitte,

Dank

Mein 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(); 
} 
+0

anhängen Sie fügen etwas Code ein, der uns zeigt, wie Sie bekommen, was Sie bekommen? ... nur der relevante Teil. – Andrej

+0

Ich löse mein Problem Mann, danke Ich werde meinen Code, vor und nach der Behebung –

+0

veröffentlichen Wir können Firebase POST URl verwenden, um diese Antwort [link] (http://stackoverflow.com/a/41696577/2599596) –

Antwort

12

war Das ist meine Lösung

i mein Problem gelöst, nahm ich die "apn", "Benutzername" und "Menge" sie in der URL Teil des Parameters "LINK" waren , aber nicht, wenn ich hinzufügen, die „&“ ich bin Teile der Haupt-uRL, hinzufügen von Parametern an die „LINK“ Feld hinzufügen i zuerst die uRL wie dieser

https://airbanq.send.com/sendmoney?username=Adri&amount=7.00

dann verwenden URLEncoder erstellen müssen. kodieren (que ryParameters.toString(), "UTF-8"); generieren diese https% 3A% 2F% 2Fairbanq.send.com% 2Fsendmoney% 253Fusername% 253DAdri% 2526amount% 253D7.00

und dann zur Haupt url

https://xxxx.app.goo.gl/?link=https%3A%2F%2Fairbanq.send.com%2Fsendmoney%253Fusername%253DAdri%2526amount%253D7.00&apn=com.airbanq.airbanqapp&amv=1

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"); 
} 
+0

Danke, arbeite genau an der gleichen Sache jetzt auch! – curtis1000

+0

Wie kann ich diese benutzerdefinierten Attribute in Android abrufen? –

+0

Faris, um diese Parameter zu senden ich benutze einen SMS-Anbieter, können Sie WhatsApp, Messenger, E-Mail, Hangouts oder was auch immer Sie wollen .. Um die Informationen abzurufen Ich benutze Firebase, Hier können Sie sehen, wie Sie hinzufügen Firebase https://firebase.google.com/docs/android/setup Hier einige Beispiel-Code https://github.com/firebase/quickstart-android/tree/master/dynamiclinks Dies ist mein Code (nur der relevante Teil) –