0

我有以下代码创建深层链接 -

public class BranchIOUtils {

    public static BranchUniversalObject createContentReference(Context context, MiniProductModel objectToPass) {
        return new BranchUniversalObject()
                // .setCanonicalIdentifier("content/12345")
                .setTitle("ProductPage")
                .setContentDescription(objectToPass.getProductParentFields().getShortDescription())
                .setContentImageUrl(objectToPass.getProductsIndividualField().getPictureList().get(0))
                .setContentIndexingMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC)
                .setLocalIndexMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC)
                .setContentMetadata(new ContentMetadata()
                        .addCustomMetadata("source", "TwoVerte Android")
                        .addCustomMetadata("version", "1.0")
                        .addCustomMetadata("type", "ProductPage")
                        .addCustomMetadata("VIId", objectToPass.getProductsIndividualField().getVerteItemId()));
    }

    public static LinkProperties createLinkProperties() {
        return new LinkProperties()
                .setFeature("ProductPage")
                .setCampaign("ProductPage")
//                .setStage("new user")
                .addControlParameter("$desktop_url", "https://myverte.com/")
                .addControlParameter("$fallback_url", "https://myverte.com/");
//                .addControlParameter("custom_random", Long.toString(Calendar.getInstance().getTimeInMillis()));
    }

    public static void shareDeepLink (Context context, BranchUniversalObject branchUniversalObject, LinkProperties linkProperties, Branch.BranchLinkShareListener listener) {

        ShareSheetStyle shareSheetStyle = new ShareSheetStyle(context, "Check this product!", "This stuff is awesome: ")
//                .setCopyUrlStyle(ContextCompat.getDrawable(context, android.R.drawable.ic_menu_send), "Copy", "Added to clipboard")
//                .setMoreOptionStyle(ContextCompat.getDrawable(context, android.R.drawable.ic_menu_search), "Show more")
                .addPreferredSharingOption(SharingHelper.SHARE_WITH.FACEBOOK)
                .addPreferredSharingOption(SharingHelper.SHARE_WITH.EMAIL)
//                .addPreferredSharingOption(SharingHelper.SHARE_WITH.MESSAGE)
//                .addPreferredSharingOption(SharingHelper.SHARE_WITH.HANGOUT)
//                .addPreferredSharingOption(shareWith)
                .setAsFullWidthStyle(true)
                .setSharingTitle("Share With");

        branchUniversalObject.showShareSheet((Activity) context, linkProperties,  shareSheetStyle, listener);
    }

所以我的问题如下 -

我确实得到了工作表菜单,我可以从许多支持应用程序中选择它来分享我的信息。如果我检查任何东西而不是我自己的应用程序(它有一个内置的消息系统,类似于 WhatsApp),深层链接工作正常,并且referringParams具有我可以使用的有效值 -

在此处输入图像描述

但如果我通过我的应用程序消息系统分享它,我什么也得不到——

在此处输入图像描述

我的猜测是它与SHARE_WITH枚举有关 -

package io.branch.referral;

/**
 * Define the Applications for the sharing the link with.
 */
public class SharingHelper {
    /**
     * <p>
     * Defines the Application for sharing a deep link with.
     * </p>
     */
    public enum SHARE_WITH {
        FACEBOOK("com.facebook.katana"),
        FACEBOOK_MESSENGER("com.facebook.orca"),
        TWITTER("com.twitter.android"),
        MESSAGE(".mms"),
        EMAIL("com.google.android.email"),
        FLICKR("com.yahoo.mobile.client.android.flickr"),
        GOOGLE_DOC("com.google.android.apps.docs"),
        WHATS_APP("com.whatsapp"),
        PINTEREST("com.pinterest"),
        HANGOUT("com.google.android.talk"),
        INSTAGRAM("com.instagram.android"),
        WECHAT("jom.tencent.mm"),
        SNAPCHAT("com.snapchat.android"),
        GMAIL("com.google.android.gm");

        private String name = "";

        private SHARE_WITH(String key) {
            this.name = key;
        }

        public String getAppName() {
            return name;
        }

        @Override
        public String toString() {
            return name;
        }
    }
}

如您所见,我仅限于几个可供选择的应用程序包,我无法输入自己的应用程序包名称。所以,如果我是正确的 - 这就是问题所在。

编辑 -

即使没有 SHARE_WITH 它也不起作用 - 深层链接在我的应用程序内部停止工作,但在它外部工作。

如何解决此问题并允许使用我自己的应用程序包发送深层链接?

4

1 回答 1

0

如果您使用实时模式的链接并且您的应用程序具有来自测试模式的密钥,您现在可能会收到参数。请确保此处不存在以下代码:

Branch.enableDebugMode();

另外,请确保您没有使用测试模式键:

<meta-data android:name="io.branch.sdk.TestMode" android:value="true" />

为了验证您的应用设置,您能否尝试以下操作:

通过在 MainActivity 的 onStart() 中调用IntegrationValidator.validate来测试分支集成。检查您的 ADB Logcat 以确保所有 SDK 集成测试都通过。确保在您的生产版本中注释掉或删除IntegrationValidator.validate 。

IntegrationValidator.validate(MainActivity.this);

点击链接时,您可以将应用程序设置为调试模式,并查看数据是否在 Branch Liveview 中更新。您可以参考此(https://docs.branch.io/apps/android/#enable-logging)了解更多详情。

确保每个测试都通过,您可以在 ADB 控制台中看到这一点。

您可以使用我们的故障排除文档验证设置: https ://docs.branch.io/apps/android/#troubleshoot-issues

如果上述通用解决方案无法解决您的问题,您可以通过 support@branch.io 与我们联系

于 2019-12-31T06:15:48.500 回答