生成深层链接时出现分支SDK错误

时间:2019-05-14 14:13:02

标签: android branch.io

当我使用分支生成深层链接时,出现错误。 BranchSDK:分支API错误:来自API的资源错误代码冲突

我已按照他们的文档中提供的说明进行操作,但仍然出现错误。

这是我的代码

清单

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

应用程序类

Branch.getAutoInstance(this);

这就是我生成深层链接的方式

val buo = BranchUniversalObject()
            .setCanonicalIdentifier(messageId.toString())
            .setTitle("ShutApp")
            .setContentDescription(invite_message)
            .setContentIndexingMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC)
            .setLocalIndexMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC)
            .setContentMetadata(ContentMetadata().addCustomMetadata("message", messageId.toString()))

    val lp = LinkProperties()
            .setFeature("sharing")
            .setCampaign("content_sharing")
            .setStage("new user")

    buo.generateShortUrl(this, lp, Branch.BranchLinkCreateListener { url, error ->
        if (error == null) {
            Log.i("BRANCH SDK", "got my Branch link to share: $url")
            shareDeepLink(url)
        } else {
            Log.i("BRANCH SDK error", error.message)
        }
    })

3 个答案:

答案 0 :(得分:0)

您可以尝试安装和运行Branch Android测试应用程序以查看是否重现该问题吗? https://docs.branch.io/apps/android/#sample-testing-apps

答案 1 :(得分:0)

我们遇到了以下问题:
io.branch.sdk.android:library:3.2.0
io.branch.sdk.android:library:4.0.0

我注意到,在我们的Android应用上,当您的android_app_link_url 有空格时,您会收到正则表达式错误:

I/BranchSDK: returned {"error":{"instrumentation":[],"metadata":[],"android_app_link_url":"doesn't pass regex"}}

I/BranchSDK: Branch API Error: Conflicting resource error code from API

因此,如上所述,
Branch.getInstance().initSession((referringParams, error)
回调永远不会被调用。

解决方案1 ​​

确保使用android_app_link_url%20空格进行编码

解决方案2

在超时中包装分支initSession()。将在3s后超时并继续应用启动。

        // branch timeout
        Runnable startTheAppTask = () -> {
            Timber.e("Branch.getInstance().initSession() has not responded. Please check for related Branch errors!");

            // continue with loading your app here
        };
        ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
        ScheduledFuture<?> branchTimeoutSchedule = executor.schedule(startTheAppTask, 3, TimeUnit.SECONDS);


        // branch init
        Branch.getInstance().initSession((referringParams, error) -> {
            // did get a response, cancel timeout
            branchTimeoutSchedule.cancel(true);

            // normal operation handling the callback
       }, getActivity().getIntent().getData(), getActivity());

答案 2 :(得分:0)

Branch.io返回 分支API错误:与API中的资源错误代码冲突

经过大量研究,我发现解决方案只是为了使测试模式变为真正的状态,如下所示。

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