导航菜单

页面标题

页面副标题

Vi App v10.18.0 - IntegrationValidator.java 源代码

正在查看: Vi App v10.18.0 应用的 IntegrationValidator.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package io.branch.referral.validators;

import android.net.Uri;
import android.text.TextUtils;
import io.branch.referral.validators.ServerRequestGetAppConfig;
import java.util.Iterator;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;

public class IntegrationValidator implements ServerRequestGetAppConfig.IGetAppConfigEvents {
    private final BranchIntegrationModel integrationModel;

    private boolean checkIfIntentAddedForLinkDomain(String str) {
        List<String> list;
        if (!TextUtils.isEmpty(str) && (list = this.integrationModel.applinkScheme) != null) {
            Iterator<String> it = list.iterator();
            while (it.hasNext()) {
                if (str.equals(it.next())) {
                    return true;
                }
            }
        }
        return false;
    }

    private boolean checkIfIntentAddedForURIScheme(String str) {
        Uri parse = Uri.parse(str);
        String scheme = parse.getScheme();
        String host = parse.getHost();
        if (TextUtils.isEmpty(host)) {
            host = "open";
        }
        JSONObject jSONObject = this.integrationModel.deeplinkUriScheme;
        if (jSONObject == null) {
            return false;
        }
        Iterator<String> keys = jSONObject.keys();
        boolean z = false;
        while (keys.hasNext()) {
            String next = keys.next();
            if (scheme != null && scheme.equals(next)) {
                JSONArray optJSONArray = this.integrationModel.deeplinkUriScheme.optJSONArray(next);
                if (optJSONArray != null && optJSONArray.length() > 0) {
                    int i2 = 0;
                    while (true) {
                        if (i2 < optJSONArray.length()) {
                            if (host != null && host.equals(optJSONArray.optString(i2))) {
                                z = true;
                                break;
                            }
                            i2++;
                        } else {
                            break;
                        }
                    }
                } else {
                    return true;
                }
            }
        }
        return z;
    }

    private void doValidateWithAppConfig(JSONObject jSONObject) {
        logValidationProgress("3. Verifying application package name");
        if (!this.integrationModel.packageName.equals(jSONObject.optString("android_package_name"))) {
            logIntegrationError("Incorrect package name in Branch dashboard. Please correct your package name in dashboard -> Configuration page.", "https://help.branch.io/developers-hub/docs/android-basic-integration#section-configure-branch-dashboard");
            return;
        }
        logValidationPassed();
        logValidationProgress("4. Checking Android Manifest for URI based deep link config");
        JSONObject jSONObject2 = this.integrationModel.deeplinkUriScheme;
        if (jSONObject2 != null && jSONObject2.length() != 0) {
            logValidationPassed();
        } else {
            if (this.integrationModel.appSettingsAvailable) {
                logIntegrationError(String.format("No intent found for opening the app through uri Scheme '%s'.Please add the intent with URI scheme to your Android manifest.", jSONObject.optString("android_uri_scheme")), "https://help.branch.io/developers-hub/docs/android-basic-integration#section-configure-app");
                return;
            }
            logValidationProgress("- Skipping. Unable to verify the deep link config. Failed to read the Android Manifest");
        }
        logValidationProgress("5. Verifying URI based deep link config with Branch dash board.");
        String optString = jSONObject.optString("android_uri_scheme");
        if (TextUtils.isEmpty(optString)) {
            logIntegrationError("Uri Scheme to open your app is not specified in Branch dashboard. Please add URI scheme in Branch dashboard.", "https://help.branch.io/developers-hub/docs/android-basic-integration#section-configure-branch-dashboard");
            return;
        }
        logValidationPassed();
        logValidationProgress("6. Verifying intent for receiving URI scheme.");
        if (checkIfIntentAddedForURIScheme(optString)) {
            logValidationPassed();
        } else {
            if (this.integrationModel.appSettingsAvailable) {
                logIntegrationError(String.format("Uri scheme '%s' specified in Branch dashboard doesn't match with the deep link intent in manifest file", optString), "https://help.branch.io/developers-hub/docs/android-basic-integration#section-configure-branch-dashboard");
                return;
            }
            logValidationProgress("- Skipping. Unable to verify intent for receiving URI scheme. Failed to read the Android Manifest");
        }
        logValidationProgress("7. Checking AndroidManifest for AppLink config.");
        if (!this.integrationModel.applinkScheme.isEmpty()) {
            logValidationPassed();
        } else {
            if (this.integrationModel.appSettingsAvailable) {
                logIntegrationError("Could not find any App Link hosts to support Android AppLinks. Please add intent filter for handling AppLinks in your Android Manifest file", "https://help.branch.io/using-branch/docs/android-app-links#section-add-intent-filter-to-manifest");
                return;
            }
            logValidationProgress("- Skipping. Unable to verify intent for receiving URI scheme. Failed to read the Android Manifest");
        }
        logValidationProgress("8. Verifying any supported custom link domains.");
        String optString2 = jSONObject.optString("short_url_domain");
        if (TextUtils.isEmpty(optString2) || checkIfIntentAddedForLinkDomain(optString2)) {
            logValidationPassed();
        } else {
            if (this.integrationModel.appSettingsAvailable) {
                logIntegrationError(String.format("Could not find intent filter to support custom link domain '%s'. Please add intent filter for handling custom link domain in your Android Manifest file ", optString2), "https://help.branch.io/developers-hub/docs/android-basic-integration#section-configure-app");
                return;
            }
            logValidationProgress("- Skipping. Unable to verify supported custom link domains. Failed to read the Android Manifest");
        }
        logValidationProgress("9. Verifying default link domains integrations.");
        String optString3 = jSONObject.optString("default_short_url_domain");
        if (TextUtils.isEmpty(optString3) || checkIfIntentAddedForLinkDomain(optString3)) {
            logValidationPassed();
        } else {
            if (this.integrationModel.appSettingsAvailable) {
                logIntegrationError(String.format("Could not find intent filter to support Branch default link domain '%s'. Please add intent filter for handling custom link domain in your Android Manifest file ", optString3), "https://help.branch.io/developers-hub/docs/android-basic-integration#section-configure-app");
                return;
            }
            logValidationProgress("- Skipping. Unable to verify default link domains. Failed to read the Android Manifest");
        }
        logValidationProgress("10. Verifying alternate link domains integrations.");
        String optString4 = jSONObject.optString("alternate_short_url_domain");
        if (TextUtils.isEmpty(optString4) || checkIfIntentAddedForLinkDomain(optString4)) {
            logValidationPassed();
        } else {
            if (this.integrationModel.appSettingsAvailable) {
                logIntegrationError(String.format("Could not find intent filter to support alternate link domain '%s'. Please add intent filter for handling custom link domain in your Android Manifest file ", optString4), "https://help.branch.io/developers-hub/docs/android-basic-integration#section-configure-app");
                return;
            }
            logValidationProgress("- Skipping.Unable to verify alternate link domains. Failed to read the Android Manifest");
        }
        logValidationPassed();
    }

    private void logIntegrationError(String str, String str2) {
        StringBuilder sb = new StringBuilder();
        sb.append("** ERROR ** : ");
        sb.append(str);
        sb.append("\nPlease follow the link for more info ");
        sb.append(str2);
    }

    private void logValidationPassed() {
    }

    private void logValidationProgress(String str) {
        StringBuilder sb = new StringBuilder();
        sb.append(str);
        sb.append(" ... ");
    }

    @Override
    public void onAppConfigAvailable(JSONObject jSONObject) {
        if (jSONObject != null) {
            doValidateWithAppConfig(jSONObject);
        } else {
            logIntegrationError("Unable to read Dashboard config. Please confirm that your Branch key is properly added to the manifest. Please fix your Dashboard settings.", "https://branch.app.link/link-settings-page");
        }
    }
}