Универсальный глубокий филиал дает пустые referParams при попытке поделиться внутри моего приложения

У меня есть следующий код, создающий глубокую ссылку:

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 это не работает - глубокая ссылка перестает работать внутри моего приложения, но работает снаружи.

Как я могу решить эту проблему и разрешить отправку глубокой ссылки с помощью моего собственного пакета приложения?


person Alon Shlider    schedule 29.12.2019    source источник
comment
Какая у вас система обмена сообщениями в приложении? это MI телефон?   -  person Shubham Mishra    schedule 30.12.2019
comment
это не телефон MI, и моя система обмена сообщениями в приложении основана на XMPP, если это то, что вы упоминаете @ShubhamMishra   -  person Alon Shlider    schedule 30.12.2019


Ответы (1)


Теперь вы можете получать параметры, если вы используете ссылку из живого режима, а ваше приложение имеет ключ из тестового режима. Пожалуйста, убедитесь, что там нет следующего кода:

Branch.enableDebugMode();

Также убедитесь, что вы не используете ключ тестового режима:

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

Чтобы проверить настройку приложения, попробуйте следующее:

Протестируйте интеграцию с веткой, вызвав IntegrationValidator.validate в onStart() вашей MainActivity. Проверьте свой 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

Если приведенное выше универсальное решение не решает вашу проблему, вы можете связаться с нами по адресу [email protected].

person Shubham Mishra    schedule 31.12.2019