【发布时间】:2017-12-03 17:33:25
【问题描述】:
我们控制了两个 iOS 应用。我们称它们为应用程序 ABC 和 XYZ。使用 Branch.io SDK,我们想知道如何:
- 以编程方式 (Swift) 在应用程序 ABC 内创建延迟深层链接,目的是将用户带到应用程序 XYZ。我们将为应用 XYZ 使用现有的 URL 方案,因为后端服务器现在完全不参与这项工作。
- 我们希望在点击 UIButton 时激活 Branch.io 深层链接(因此此处不涉及 WebView。只是一个原生按钮)
- 我们希望将一个 20 多小时的 ID(字母和数字)以及可能的登录信息(如果我们能够安全可靠地执行此操作)传递给接收应用,即 XYZ 应用。
我们已按照https://docs.branch.io/pages/apps/ios/ 中的步骤操作,以确保基本工作正常。这包括“测试深层链接”部分。那工作得很好。
我相信我已经阅读了与 iOS 和 Branch.io 提供的仪表板相关的每一个 API 文档。
这个任务对我来说最有趣的是:
代码在这里(内容已更改,因此无法识别我们正在谈论的现实世界中的哪些应用,因为这并不重要):
private class func createBranchIoLink(someIdentifier: String) {
// Create content reference
let buo = BranchUniversalObject(canonicalIdentifier: "content/\(someIdentifier)")
buo.canonicalUrl = "xyz://content/\(someIdentifier)" // example is https://example.com/content/123
buo.title = "Some Title"
buo.contentDescription = "Add it to the other app"
// Create link reference
let lp: BranchLinkProperties = BranchLinkProperties()
lp.channel = "ios"
lp.feature = "some-feature"
buo.getShortUrl(with: lp) { (url, error) in
print(url ?? "")
print(error ?? "")
print("ok done")
// when I take the url given to us here, the URL takes me back to THIS app instead of the app I want!
}
}
感谢您提供的任何帮助。谢谢!
【问题讨论】:
-
快速建议您的使用案例:如果您的App ABC已经安装在设备上,您可以使用identifierForVendor+“您的数据库”跟踪关系链接-> identifierForVendor来获得更一致的结果。另一种选择是使用共享钥匙串将数据从一个应用程序传播到同一设备上的另一个应用程序。 Branch iO(或其他延迟深度链接提供商)可能会使用 cookie 或指纹(IP 地址)将点击的链接与已安装的应用程序相匹配。这两种方法都不太健壮。
-
好点子和建议,@OleksiyIvanov 谢谢!
标签: ios deep-linking url-scheme branch.io ios-universal-links