2016-07-07 144 views
8

我手動創建動態鏈接和我設置一些附加參數的鏈接,就像這樣:https://XXXXX.goo.gl/?link=https%3A%2F%2Fairbanq.send.com%2Fsendmoney&apn=com.xxxx.xxxx&amv=1&username=Adri&amount=7.00如何使用Firebase從動態鏈接獲取額外參數?

,但應用程序打開時,我只得到:「https://開頭airbanq.send.com/sendmoney」 沒有addiotional參數

我使用此示例代碼 https://github.com/firebase/quickstart-android/tree/master/dynamiclinks

任何幫助,請

感謝

我的代碼

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

燦你粘貼一些代碼告訴我們你是如何得到你所得到的? ......只是相關的部分。 – Andrej

+0

我解決我的問題的人,謝謝 我會發布我的代碼,修復之前和之後 –

+0

我們可以使用Firebase POST URl來生成請參閱此答案[鏈接](http://stackoverflow.com/a/41696577/2599596 ) –

回答

12

那是我的解決方案

我解決我的問題,我承擔了「APN」,「用戶名」和「量」,他們的參數「LINK」的一部分,在url ,但沒有當我添加「&」我加入部分的主URL,將參數添加到「鏈接」欄,我需要先創建URL這樣

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

然後使用URLEncoder的。編碼(闕ryParameters.toString(),「UTF-8」); 產生這種 的https%3A%2F%2Fairbanq.send.com%2Fsendmoney%253Fusername%253DAdri%2526amount%253D7.00

,然後附加到主網址

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

謝謝,現在正在做同樣的事情! – curtis1000

+0

如何在android中發送檢索這些自定義屬性? –

+0

Faris,發送這些參數我使用短信提供商,您可以使用whatsapp,Messenger,電子郵件,環聊或任何你想要的。 要檢索我使用Firebase的信息, 在這裏,你可以看到如何添加Firebase https://firebase.google.com/docs/android/setup 這裏是一些示例代碼https://github.com/firebase/quickstart-android/tree/master/dynamiclinks 這是我的代碼(只是相關部分) –

相關問題