Branch.io 自定义网址缩短器和通用链接

Posted

技术标签:

【中文标题】Branch.io 自定义网址缩短器和通用链接【英文标题】:Branch.io custom url shortener & universal links 【发布时间】:2016-02-24 16:39:59 【问题描述】:

假设: 我有一个自定义 URL 缩短器,它重定向到一个 branch.io 长 URL。 该自定义 URL 域已在我的应用程序的通用链接权利文件中注册。 当用户点击短链接时,应用程序打开并调用 application:continueUserActivity:restorationHandler:... 在该方法中,我得到了短链接后面的重定向 URL(分支),基于新链接创建一个新的 NSUserActivity 并从 Branch SDK 调用“continueUserActivity”方法(以新活动作为参数)。

问题是来自 Branch SDK 的回调没有返回任何连接到该链接的内容。它返回就好像没有传递任何 URL。

如果我对来自重定向的链接进行硬编码并立即调用 Branch SDK,而不等待重定向响应,那么一切正常。我想这与 Branch SDK 中的时间相关。

问题是:在使用上述重定向方案时,如何让 Branch 识别链接并返回我需要的参数? (我想使用我自己的 URL 缩短器,而不是 Branch 的那个)

【问题讨论】:

Alex with Branch here:这绝对是我们链接系统的一个不寻常的应用!我们提供了内置的 URL 缩短器,以帮助避免像您描述的那样更复杂的过程中固有的陷阱,因此很难确定事情可能在哪里中断。您能帮我理解使用自定义缩短器背后的基本原理吗? 你是如何得到短网址后面的链接的?就我而言,我想要缩短网址后面的网址。 @stonycis @Sumeet.Jain 我使用 AFHTTPSessionManager (AFNetworking) 中的“setTaskWillPerformHTTPRedirectionBlock”方法来获取短 URL 后面的重定向。 【参考方案1】:

在确定是否需要处理 Branch 链接时,Branch 会检查以验证 NSUserActivity 是否属于 NSUserActivityTypeBrowsingWeb 类型。如果是,Branch 检查 .webpageURL 以确定它是否是 Branch 链接。如果不是,Branch 就认为没有点击任何 Branch 链接。

要在应用以其他方式打开后手动将分支链接传递到 SDK,有两个函数可用:.continue 和 .handleDeepLink。

.继续

    let activity = NSUserActivity(activityType: "NSUserActivityTypeBrowsingWeb")
    activity.webpageURL = URL(string: "https://testbed-swift.app.link/77Q527xswy")
    Branch.getInstance().continue(activity);

.handleDeepLink

    Branch.getInstance().handleDeepLink(URL(string: "https://testbed-swift.app.link/77Q527xswy"))

如果您调用其中一种方法,Branch SDK 将处理传入的 Branch 链接。如果这些方法不适合您,我会检查以验证您是否确实在代码中传入了有效的 Branch 链接,并且不是您用来打开应用的短链接。

【讨论】:

以上是关于Branch.io 自定义网址缩短器和通用链接的主要内容,如果未能解决你的问题,请参考以下文章

使用 Branch.io 的自定义 URL 方案中的路径变量?

怎么把链接变短

最新官方新浪短网址生成API接口与在线短网址缩短工具分享

2020最新新浪短网址生成API接口与在线网址缩短工具分享与介绍

网址缩短 短网址链接缩短生成器的试用推荐

Branch.io 自定义事件计数不会增加快速链接