11

動的リンクを手動で作成し、次のようにリンクにいくつかの追加パラメータを設定しました: 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」を取得するだけです

私はこのサンプルコードを使用しています 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();
}
4

2 に答える 2

22

それが私の解決策でした

私は自分の問題を解決しました。「apn」、「username」、「amount」は、URL のパラメーター「LINK」の一部であると想定しましたが、「&」を追加すると、メインの URL にパーツを追加していません。 「LINK」フィールドにパラメータを追加するには、最初にこのような URL を作成する必要があります

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に追加します

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");
}
于 2016-07-07T18:32:55.387 に答える
0

公式の回答は、URL クエリ内に安全に配置できるように、URL 文字列をエスケープ/エンコードする必要があるというものです。Firebaseの動的リンクがリンクについてそれを言ってくれることを願っています.

ゴランの場合: url.QueryEscape(urlstring)

于 2019-05-18T06:13:50.160 に答える