首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Branch.io:单击链接时深入到特定活动中的

Branch.io:单击链接时深入到特定活动中的
EN

Stack Overflow用户
提问于 2015-12-16 17:49:27
回答 1查看 4.3K关注 0票数 5

我成功地创建了一个深度链接并将其发布到facebook上,并附带了所有相关的元数据:

代码语言:javascript
复制
TextView.OnClickListener inviteClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        BranchUniversalObject branchUniversalObject = new BranchUniversalObject()
                // The identifier is what Branch will use to de-dupe the content across many different Universal Objects
                .setCanonicalIdentifier("item/12345")
                        // This is where you define the open graph structure and how the object will appear on Facebook or in a deepview
                .setTitle("Suits")
                .setContentDescription("Great suits here")
                .setContentImageUrl("http://steezo.com/wp-content/uploads/2012/12/man-in-suit.jpg")
                        // You use this to specify whether this content can be discovered publicly - default is public
                .setContentIndexingMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC)
                        // Here is where you can add custom keys/values to the deep link data
                .addContentMetadata("picurl", "http://steezo.com/wp-content/uploads/2012/12/man-in-suit.jpg");

        LinkProperties linkProperties = new LinkProperties()
                .setChannel("facebook")
                .setFeature("sharing")
                .addControlParameter("$desktop_url", "http://www.yahoo.com")
                .addControlParameter("$ios_url", "http://www.microsoft.com");

        ShareSheetStyle shareSheetStyle = new ShareSheetStyle(PlaceDetailsActivity.this, "Check this out!", "This stuff is awesome: ")
                .setMoreOptionStyle(getResources().getDrawable(android.R.drawable.ic_menu_search), "Show more")
                .addPreferredSharingOption(SharingHelper.SHARE_WITH.FACEBOOK)
                .addPreferredSharingOption(SharingHelper.SHARE_WITH.EMAIL);

        branchUniversalObject.showShareSheet(PlaceDetailsActivity.this,
                linkProperties,
                shareSheetStyle,
                new Branch.BranchLinkShareListener() {
                    @Override
                    public void onShareLinkDialogLaunched() {
                    }
                    @Override
                    public void onShareLinkDialogDismissed() {
                    }
                    @Override
                    public void onLinkShareResponse(String sharedLink, String sharedChannel, BranchError error) {
                        Log.e("LinkShared", "success");
                    }
                    @Override
                    public void onChannelSelected(String channelName) {
                    }
                });

        branchUniversalObject.generateShortUrl(PlaceDetailsActivity.this, linkProperties, new Branch.BranchLinkCreateListener() {
            @Override
            public void onLinkCreate(String url, BranchError error) {
                if (error == null) {
                    Log.i("MyApp", "got my Branch link to share: " + url);
                }
            }
        });
    }
};

我做不到的是确保当点击链接时,它会在我的应用程序中进行正确的活动。我密切关注指南,但在某些地方,我发现指南有点模糊- sdk/#branch-universal-object-for-deep-links-content-analytics-and-indexing

在我想要调用的活动中,我把它放在清单中:

代码语言:javascript
复制
    <activity
        android:name=".SuitActivity"
        android:label=""
        android:windowSoftInputMode="adjustResize">
        <meta-data android:name="io.branch.sdk.auto_link_keys_6" android:value="picurl" />
    </activity>

在SuitActivity类中,我输入了以下内容:

代码语言:javascript
复制
@Override
protected void onResume() {
    super.onResume();
        if (Branch.isAutoDeepLinkLaunch(this)) {
            try {
        action.setPicurl(Branch.getInstance().getLatestReferringParams().getString("picurl"));

            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            Log.e("nondeeplink","Launched by normal application flow");
        }
}

要点击Facebook中的链接,打开我的SuitActivity而不是我的MainActivity,这似乎就是所有需要做的事情,但它似乎行不通。当我单击分支链接时,它将打开MainActivity。

当我在分支上创建链接时,日志中返回的内容如下:

代码语言:javascript
复制
2-16 19:44:38.019 24086-24086/com.example I/MyApp: got my Branch link to share: https://bnc.lt/cByh/7d3u8enomp
12-16 19:44:38.021 24086-24129/com.example I/BranchSDK: posting to https://api.branch.io/v1/url
12-16 19:44:38.021 24086-24129/com.example I/BranchSDK: Post value = {
                                                                                            "identity_id": "20569XXX",
                                                                                            "device_fingerprint_id": "20519XXX",
                                                                                            "session_id": "2057XXX",
                                                                                            "tags": [],
                                                                                            "alias": "",
                                                                                            "channel": "Add to Facebook",
                                                                                            "feature": "sharing",
                                                                                            "stage": "",
                                                                                            "data": "{\"$og_title\":\"Suits\",\"$canonical_identifier\":\"item\\\/12345\",\"$keywords\":[],\"$og_description\":\"Great suits here\",\"$og_image_url\":\"http:\\\/\\\/steezo.com\\\/wp-content\\\/uploads\\\/2012\\\/12\\\/man-in-suit.jpg\",\"$content_type\":\"\",\"$exp_date\":\"0\",\"picurl\":\"http:\\\/\\\/steezo.com\\\/wp-content\\\/uploads\\\/2012\\\/12\\\/man-in-suit.jpg\",\"$desktop_url\":\"http:\\\/\\\/www.yahoo.com\",\"$ios_url\":\"http:\\\/\\\/www.microsoft.com\",\"source\":\"android\"}",
                                                                                            "sdk": "android1.10.1",
                                                                                            "retryNumber": 0,
                                                                                            "branch_key": "key_test_XXX"
                                                                                        }

编辑:

我现在甚至添加了一个GitHub示例,供您测试以下内容:https://github.com/Winghin2517/BranchIOTestDeepLink

它包括两项活动:

  1. 带有FAB的MainActivity --它是通过安卓工作室创建的新应用程序的标准模板。如果您点击FAB,Branch.io将启动并要求您添加到facebook,复制链接等。
  2. SecondActivity -一旦你在facebook上分享并点击facebook上的链接,SecondActivity就应该启动了。目前,当您单击facebook上的链接或共享它的任何地方时,该链接仍将打开MainActivity。

要使此示例正常工作,还请将您的branch.IO密钥替换为您在清单中的配置文件中的密钥,因为它们目前只是XXX的:

代码语言:javascript
复制
<meta-data android:name="io.branch.sdk.BranchKey" android:value="key_live_XXX" />
<meta-data android:name="io.branch.sdk.BranchKey.test" android:value="key_test_XXX" />

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-18 09:25:17

在与Branch.io联系了几天之后,Github现在是安卓与branch.io的一个工作示例,我终于让它开始工作了:

https://github.com/Winghin2517/BranchIOTestDeepLink

如果你点击facebook上的链接或你决定将链接发送到的任何地方,该应用程序将打开‘第二个活动’,而不是'MainActivity‘。如果您从'SecondActivity‘中单击back,它将关闭应用程序,因为onActivityResult方法将在'MainActivity’中被调用,并带有正确的活动代码,而finish()方法在'MainActivity‘中被调用以关闭应用程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34318810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档